我在iOS 5中收到此错误
-[UITableView dequeueReusableCellWithIdentifier:forIndexPath:]: unrecognized selector sent to instance 0xa217200
但是,iOS 6中没有错误。我该如何解决这个问题?这是我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; /// SIGABRT error
if (!cell)
{
cell = [[UITableViewCell alloc]
initWithStyle: UITableViewCellStyleSubtitle
reuseIdentifier: CellIdentifier];
}
return cell;
}
答案 0 :(得分:129)
编辑:此方法是在iOS6 + SDK中新添加的。
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
但是在iOS 5中,要创建UITableViewCell
的实例,我们通常使用此方法: -
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
在iOS 5中,您不需要在iOS 6中使用过额外的参数。(forIndexPath :)。
所以改变你的方法。它会起作用。
答案 1 :(得分:7)
这就是你收到错误的原因。根据iOS 6.0文档集,UITableView类参考声明{i}在iOS 2.0及更高版本中可用,dequeueReusableCellWithIdentifier:
在iOS 6.0及更高版本中可用。