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'
可恶的是我的cell 就用的系统的,所以不存在让我注册nib的问题吧。
官方这样解释
// Beginning in iOS 6, clients can register a nib or class for each cell.
// If all reuse identifiers are registered, use the newer -dequeueReusableCellWithIdentifier:forIndexPath: to guarantee that a cell instance is returned.
好吧。我改用 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];,这时候,就没有问题了。
这样搭配:1:
self.baseTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, naviView.bounds.size.height+40, naviView.bounds.size.width, self.view.frame.size.height-naviView.bounds.size.height) style:UITableViewStylePlain];
self.baseTableView.delegate = self;
self.baseTableView.dataSource = self;
[self.view addSubview:self.baseTableView];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *ID = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (!cell) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
cell.textLabel.text = @"测试";
}
return cell;
}或者这样搭配2:
self.baseTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, naviView.bounds.size.height+40, naviView.bounds.size.width, self.view.frame.size.height-naviView.bounds.size.height) style:UITableViewStylePlain];
self.baseTableView.delegate = self;
self.baseTableView.dataSource = self;
[self.baseTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
[self.view addSubview:self.baseTableView];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [self.baseTableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
cell.textLabel.text = self.cellStr;
return cell;
}注册的这个,也可以是 registerNib