为什么我的tableview会在标识符上崩溃?

时间:2013-05-30 15:00:31

标签: ios uitableview reuseidentifier

我创建了一个tableviewcontroller来处理tableview中的4个静态单元格。 tableview位于4个单元格的正下方。然而,最后一个单元格,第四个单元格,基于第三个单元格的结果是可选的。

选择器返回一个值,当它执行时,如果值正确,它会重新加载tableview以激活第4个单元格。

SettingsViewController

当我运行应用程序时,它在加载SettingsViewController时崩溃并出现此错误:

由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法使用标识符Cell对单元格进行出列 - 必须为标识符注册nib或类或在故事板中连接原型单元格

如果我有静态单元格,我认为我不需要重用标识符?

以下是相关代码:

#pragma mark - Table view data source

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if(self.showLastCell)
    {
        return 4;
    }
    return 3;
}

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

    // Configure the cell...

    return cell;
}

2 个答案:

答案 0 :(得分:0)

出列单元格用于包含动态单元格的表格视图。静态单元格表​​视图不必具有数据源cellForRowAtIndexPath。因此,您可以安全地删除数据源方法cellForRowAtIndexPath。

请查看此问题以获取更多说明:Storyboard static cells: dequeueReusableCellWithIdentifier returns nil

或者您可以使用此处提到的超级方法:UITableView with static cells without cellForRowAtIndexPath. How to set clear background?

答案 1 :(得分:0)

你不需要将它出列,正如你所说,它只是静态单元格。

而不是:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

使用:

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
祝你好运!

编辑:太慢了!