建立UITableViewController的注意點

1 代碼建立控制器時,設置控制器的組的樣式:分組與否;重寫初始化方法佈局

- (instancetype)initspa

{it

    return [super initWithStyle:UITableViewStyleGrouped/UITableViewStylePlain];table

}class

- (instancetype)initWithStyle:(UITableViewStyle)stylequeue

{方法

    return [super initWithStyle:UITableViewStyleGrouped/UITableViewStylePlain];數據

}樣式

 

2當自定義cell時,因爲建立的cell格式和系統提供的格式都不同,所以處理能夠以下,static

2.1) 此時代碼建立cell時能夠採用忽略cell格式的方式建立cell,即先註冊單元格,而後在數據源方法中設置cell,具體代碼以下2.1.1  2.1.2  2.1.3 ;(MYStatusCell即爲自定義的cell)

2.1.1) static NSString *ID = @"MYCell";

2.1.2) - (void)viewDidLoad{

       //註冊單元格

      [self.tableView registerClass:[MYStatusCell class] forCellReuseIdentifier:ID];

       }

2.1.3)- (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath{

    //使用此方式,直接自定義cell了,再也不關注cell的樣式了 

    MYStatusCell *cell = [tableView dequeueReusableCellWithIdentifier:ID forIndexPath:indexPath];

    Status *status = self.statuses[indexPath.row];

    cell.status = status;

    return cell;

}

2.2) 也能夠隨便設置一個樣式,因爲重寫了initWithStyle:(UITableViewCellStyle)style reuseIdentifier:方法,因此cell的展現樣式會隨着自定義的格式來佈局,具體實現代碼以下2.2.1  2.2.2 

2.2.1)在控制器.m文件中:

- (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath{

    static NSString *ID = @"MYCell";

    //使用此方式,直接自定義cell了,再也不關注cell的樣式了 

    MYStatusCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

    if (cell == nil) {

//注意此處的Style能夠爲UITableViewCellStyleDefault / UITableViewCellStyleValue1 / UITableViewCellStyleValue2 / UITableViewCellStyleSubtitle中的任一種

        cell = [[MYStatusCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];

    }

    Status *status = self.statuses[indexPath.row];

    cell.status = status;

    return cell;

}

 

2.2.2)在自定義的MYStatusCell .m文件中,實現方法重寫:(這個方法是自定義控件的入口處方法

- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier{

   self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if (self) {

  [self setUpUI]; //此處是cell中各類自定義控件的佈局關係

    }

    return self;

}

 

 

未完待續

相關文章
相關標籤/搜索