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'


區別:

 
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; 
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath
 NS_AVAILABLE_IOS(6_0); // newer

1 第二個方法在SDK5.0是運行不起來的。
2 如果需要使用這個方法,你必須使用配套的方法來一起用,下面兩個配套方法:

 

1 // Beginning in iOS 6, clients can register a nib or class for each cell.
2 // If all reuse identifiers are registered, use the newer -dequeueReusableCellWithIdentifier:forIndexPath: to guarantee that a cell instance is returned.
3 // Instances returned from the new dequeue method will also be properly sized when they are returned.
4 - (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(5_0);
5 - (void)registerClass:(Class)cellClass forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(6_0);

 

注意看上面的注釋
3 比如你已經用NIB做了一個Cell,或者自定義了一個Cell。我們在你創建UITableView的時候,就可以順帶

1 self.tableView.backgroundColor = xxxx;
2 [self.tableView registerClass:[CustomCell class] forCellReuseIdentifier:@"CustomCell"];

這樣你在

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

這個方法里,你就可以省下這些代碼:

1     static NSString *CellIdentifier = @"Cell";
2     if (cell == nil) {
3         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
4       //設置你的cell
5

而只需要

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM