今天在學習IAP的時候無心間看到原來 tableView: cellForRowAtIndexPath:方法中有兩個得到重用cell的方法,一直以來都是用UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];那下面的這個怎麼用呢,感受比較怪,假設沒有重用的豈不是爲空了UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]具體有什麼區別呢,而且當我用 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]的時候,爲何總報錯
reason: 'unable to dequeue a cell with identifier Cell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard',通過查閱,知道原來此方法爲6.0新加的,在SDK5.0是運行不起來的。 若是須要使用這個方法,你必須使用配套的方法來一塊兒用,下面兩個配套方法選其一:
- (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(5_0);
- (void)registerClass:(Class)cellClass forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(6_0);ide
3 好比你已經用NIB作了一個Cell,或者自定義了一個Cell。咱們在你建立UITableView的時候,就能夠順帶
self.tableView.backgroundColor = xxxx;
[self.tableView registerClass:[CustomCell class] forCellReuseIdentifier:@"CustomCell"];學習
這樣你在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath這個方法裏,你就能夠省下這些代碼:
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];prototype
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
//設置你的cell
}it
而只須要
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
//設置你的cell
總體來講6.0倒是比5.0更省勁table