文章目录
  1. 1. 蒙版加载相关代码
  • 对于关联tableView的操作
    1. 1. 附上部分代码
  • 关于解析数据
  • 修改MJRefresh的忽略高度
    • 利用蒙版时间来加载数据,其中轻量级蒙版SVP中有两种模式,一种带有暗色背景,加载蒙版时是不可以点击其他的maskType类型,另一种是不带有后背景的,推测是一个显示级别较高的window,(没条件验证当下),解析数据用AFNetworking中session,其中反馈成功和失败的信息,当然蒙版也是等到数据加载完之后取消。
    • 数据解析,查看返回的数据,建立相应的模型,对于模型中的key值和系统关键字重复,MJExtesion和YYKit中都有相应的处理办法。

    蒙版加载相关代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // 加载左边数据
    -(void)loadCategories {
    [SVProgressHUD show];
    XMGRecommendCategoriesParam *param = [[XMGRecommendCategoriesParam alloc] init];
    param.a = @"category";
    param.c = @"subscribe";
    [XMGRecommendTool recommendCategoriesWithParam:param success:^(XMGRecommendCategoriesResult *result) {
    [SVProgressHUD dismiss];

    self.categories = result.list;
    [self.categoryTableView reloadData];

    // 选中首行
    [self.categoryTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop];
    [self.userTableView.header beginRefreshing];
    } failure:^(NSError *error) {
    [SVProgressHUD dismiss];
    }];
    }

    对于关联tableView的操作

    设置点中是cell的状态,如果是文字可以利用他的属性来设置cell自身textlabel的textheightlightColortextColor,当然,如果你的cell的sectionStyle设置的为none,此时cell自带空间的高亮属性将不起作用,当然这也是还可以有其他办法,比如,在- (void)setSelected:(BOOL)selected animated:(BOOL)animated方法中设置textColor在selected!selected情况下的状态设置不同颜色,再者- (void)setSelected:(BOOL)selected animated:(BOOL)animated方法是每次点击cell之后会自动取消之前选中cell的点击状态,之后再改变当前选中cell的状态。

    附上部分代码

    1
    2
    3
    4
    5
    6
    7
    8

    -(void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    self.selectedIndicator.hidden = !selected;

    self.textLabel.textColor = selected?XMGColor(192, 62, 66):[UIColor darkGrayColor];
    }
    • 当然有表现形式就要有实际内容,此时就要给cell中的属性赋值,止痒就需要一个模型,可以利用模型的属性给各个属性赋值,同样,在控制器中也可以用模型直接为cell赋值。

    关于解析数据

    这里使用MJExtension和AFNetworking

    1
    2
    3
    4
    5
    6
    [[AFHTTPSessionManager manager] GET:@"http://api.budejie.com/api/api_open.php" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
    // 隐藏指示器
    [SVProgressHUD dismiss];

    // 服务器返回的JSON数据
    self.categories = [XMGRecommendCategory objectArrayWithKeyValuesArray:responseObject[@"list"]];
    • 在cell的模型中设置其他属性的值,目的是在有数据就给数据
    1
    2
    3
    4
    5
    6
    - (void)setCategory:(XMGRecommendCategory *)category
    {
    _category = category;

    self.textLabel.text = category.name;
    }

    联动思路:在点击左侧的cell时,刷新(发送网络请求(网络请求延迟造成的数据显示延迟),或者从本地取)右侧cell的数据。根据tableview的不同,在一套公用的代理方法中设置左右两侧的cell数据(分组/行数/cell类型)

    自定义分割线思路:将原来cell的separate设置为none,自己加一个uiview在底部

    点击不同分类请求不同数据,避免之前点击过的重复发送请求:解决方案思路:在左侧模型中设置一个可变数组,利用 self.tableview.indexforTheselectedRow.row获取当前的分类中数组中的数据,也就是对应的右侧的tableview中的数据,具体见示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    if (tableView == self.categoryTableView) { // 左边的类别表格
    XMGRecommendCategoryCell *cell = [tableView dequeueReusableCellWithIdentifier:XMGCategoryId];
    cell.category = self.categories[indexPath.row];
    return cell;
    } else { // 右边的用户表格
    XMGRecommendUserCell *cell = [tableView dequeueReusableCellWithIdentifier:XMGUserId];
    XMGRecommendCategory *c = self.categories[self.categoryTableView.indexPathForSelectedRow.row];
    cell.user = c.users[indexPath.row];
    return cell;
    }
    }

    修改MJRefresh的忽略高度

    1
    2
    3
    4

    /** 忽略多少scrollView的contentInset的top */

    @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop;
    文章目录
    1. 1. 蒙版加载相关代码
  • 对于关联tableView的操作
    1. 1. 附上部分代码
  • 关于解析数据
  • 修改MJRefresh的忽略高度