-3

总的来说,我对 Objective C 和 iOS 开发还很陌生,我仍在尝试了解它。但我正在尝试使用 Storyboards 制作一个简单的 iOS 应用程序,其中(截至目前)一个 UITableViewController 作为主页。我只是想让细胞出现。我的代码是:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
   // Return the number of sections.
   return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   // Return the number of rows in the section.
   return 1;
}

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

   return cell;
}

我密切关注第二个 iOS 观鸟教程应用程序(链接),并且之前获得了一个 UITableViewController 可以在模拟器中查看。但我不明白为什么这不像观鸟应用程序那样工作。

我得到的错误是:

'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:

我究竟做错了什么?

4

2 回答 2

0

所以你正在使用 Storyboards 和 UITableViewController。这意味着您需要:

  1. 转到您的故事板
  2. 单击表格视图中的第一个单元格
  3. 确保实用程序(右侧的窗口)正在显示
  4. 单击属性检查器
  5. 将“样式”从“自定义”更改为“基本”(如果您已自定义单元格,请使用自定义)
  6. 单击标识符并确保它与您的 cellForRowAtIndexPath 方法(cervical_patterns)中的相同

还要检查您是否正确设置了类:

  1. 转到您的故事板
  2. 单击表格视图下的黑条
  3. 确保实用程序(右侧的窗口)正在显示
  4. 单击身份检查器
  5. 确保在下拉菜单中选择了您的自定义类

我刚刚在 XCode 中完成了这项工作,并且效果很好(请注意,不需要任何 (cell == nil)代码)。下面的具体代码:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"cervical_patterns";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // Configure the text and graphics of the cell

    return cell;
}
于 2012-09-12T14:17:53.920 回答
-1

您需要实际创建单元格,如下所示:

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

    if (cell == nil) {
       cell = [[[UITableViewCell alloc]
               initWithStyle:UITableViewCellStyleDefault
             reuseIdentifier:cervical_patterns ] autorelease];

    }

   return cell;
}
于 2012-09-11T01:03:00.210 回答