繁体   English   中英

静态UITableViewCell在CellForRowAtIndexPath上返回nil,但仅对于某些部分

[英]Static UITableViewCell returns nil on CellForRowAtIndexPath, but only for certain sections

我已经在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。

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

有什么建议吗?

我不知道为什么会得到结果-当我尝试并记录单元格时,我只获得前3个部分的有效单元格。 第2节之后的所有内容均为空。 坦白说,我不确定它为什么能正常工作,因为这不是苹果公司所说的填充静态表格视图的方式。 您应该在表格视图控制器中为单元格中的UI元素创建IBOutlet。 在这方面,静态表视图的行为更像是带子视图的滚动视图,而不是表视图。 您还可以使IBOutlet成为单元格本身而不是单个UI元素,然后使用点表示法来寻址自定义单元格中的任何属性,或诸如textLabel和detailTextLabel之类的标准属性。

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

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

– dequeueReusableCellWithIdentifier:forIndexPath:
– dequeueReusableCellWithIdentifier:

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

我知道那不是您要找的答案,而是事实:)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM