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分配了內存後,能夠調用屢次初始化方法,就像隨便改變一個對象的屬性值同樣。

相關文章
相關標籤/搜索