0

我在 Storyboard 场景中使用静态单元定义了一个表格视图控制器。表格视图本身包含六个部分,每个部分包含一个或两个单元格。我在视图控制器中通过此方法将数据写入单元格:

- (void)setUpAllCells
{
    //Charge Name
    NSIndexPath *path = [NSIndexPath indexPathForRow:0 inSection:0];
    TableViewCellTextField *currentTextField = (TableViewCellTextField *)[[self tableView] cellForRowAtIndexPath:path];
    [currentTextField.textField setDelegate:self];

    //Charge Description
    path = [NSIndexPath indexPathForRow:1 inSection:0];
    currentTextField = (TableViewCellTextField *)[[self tableView] cellForRowAtIndexPath:path];
    [currentTextField.textField setDelegate:self];

    ...

    path = [NSIndexPath indexPathForRow:0 inSection:5];
    TableViewCellControl *currentControl = (TableViewCellControl *)[[self tableView] cellForRowAtIndexPath:path];
    [currentControl setValue:m_data->trailBurnTime];
}

从以下位置调用:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self setUpAllCells];
}

当我运行应用程序时,除了最后一部分之外,每个单元格都按我的预期响应。
最后一部分的单元格未连接到我的控制器,并保留故事板场景中的默认值。我在 setUpAllCells 中设置了一个断点,发现 cellForRowAtIndexPath 为最后一部分返回 nil。

我已经将这种格式用于其他五个视图控制器,但没有发生这种情况。

这是我到目前为止所尝试的:

  • 我用我自己的自定义 TableViewCells 测试了这个,当这些都不起作用时,标准 UITableViewCells。最后一部分总是返回 nil。

  • 我重新排列了部分和单元格。最后一部分总是返回 nil。

  • 我完全删除了该部分。没有它,其他部分仍然可以正常工作。

  • 我添加了更多部分。第 5 节中的任何内容在 CellForRowAtIndexPath 处返回 nil。

我在这里不知所措。我不知道是什么原因造成的。

建议?

4

2 回答 2

1

我不知道为什么你会得到你所做的结果——当我尝试它并记录单元格时,我只得到了前 3 个部分的有效单元格。任何超过第 2 节的内容都是空的。坦率地说,我不确定它为什么会起作用,因为这不是 Apple 所说的填充静态表格视图的方式。您应该在表格视图控制器中为单元格中的 UI 元素创建 IBOutlets。在这方面,静态表视图更像是带有子视图的滚动视图,而不是表视图。您还可以为单元格本身而不是单个 UI 元素创建 IBOutlets,然后使用点表示法来处理自定义单元格中的任何属性,或者像 textLabel 和 detailTextLabel 这样的标准属性。

于 2013-05-23T01:36:05.973 回答
0

关于您的问题的有趣故事是,当您在 tableview 上调用函数 cellForRowAtIndexPath 时,我相信它会依次调用您应该作为 UITableViewDelegate 实现的委托回调函数,该函数为 TableView 提供 cellForRowAtIndexPath。

实现该功能后,您将恢复单元格。我认为您正在寻找的功能是:

– dequeueReusableCellWithIdentifier:forIndexPath:
– dequeueReusableCellWithIdentifier:

看这里:http: //developer.apple.com/library/ios/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html

我知道这不太可能是您正在寻找的答案,但它是事实:)。

于 2013-05-23T00:29:23.557 回答