0

我刚买了一台新的 Mac,我从 Appstore 下载了 Xcode (4.5.1)。默认情况下,当您创建一个新项目时(在我的情况下,使用启用 Storyboard 的 Master/Detail 模板)它以 ios 6.0 为目标,并且该项目在我已升级到 6.0 的 iPhone 上运行良好。

为了在带有 5.1.1 的 iPhone 上运行它,我更改了部署目标。在 UITableView 添加和显示项目时在 5.1.1 上运行,我收到以下错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason:' -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:]: 
unrecognized selector sent to instance 0x1023b800'

这是引发错误的代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

    NSDate *object = _objects[indexPath.row];
    cell.textLabel.text = [object description];
    return cell;
}

从我以前的 iPhone 项目中,我习惯于在下面看到这个

if(cell == nil)
// Create the cell

但我认为我不需要这个,因为 Storyboard 已经在 UITableView 中添加了一个 Cell。

有小费吗..?

最好的问候Øystein

4

2 回答 2

6

该问题可以在[UITableView dequeueReusableCellWithIdentifier:forIndexPath:] 文档中找到;

在 iOS 6.0 及更高版本中可用。

于 2012-10-06T09:12:32.137 回答
1

我将有问题的代码行更改为

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

基本上下降forIndexPath:indexPath并且它起作用了。现在我正在继续尝试更多代码,如果这会导致问题,我会报告。

于 2012-10-12T05:52:04.497 回答