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;
}
未完待續