UITableViewCell在非Nib及Cell重用下设置CellStyle

在UITableViewController(实现了UITableViewDataSource)下须要实现ide

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;spa

此接口就是使用数据初始化一个Cell视图并返回,咱们能够每次建立一个新Cell,而后返回对象

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier接口

这样咱们能够在建立Cell对象的时候设置它的Style。内存

而若是是Cell重用的时候,咱们只能从tableView的cell池中获取一个Cell对象it

- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath;table

这样获得的cell,是使用默认初始化方法和参数建立的,建立的过程有tableView负责,对咱们透明。class

而cell对象又没有设置style的明确接口,由于又不是在nib环境下,也不能经过IB来设置。queue

最终的解决方法是,获得的cell对象再次调用初始化方法initWithStyle,即方法

cell = [cell initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"UITableViewCell"];

 

总结:初始化方法并不老是跟alloc配套使用,不要造成这样的固定思惟。alloc分配了内存后,能够调用屡次初始化方法,就像随便改变一个对象的属性值同样。

相关文章
相关标签/搜索