我在故事板中定义了一个单元格,我有
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TTEntry" forIndexPath:indexPath];
它给了我一个单元格,然后我可以配置它,它显示正常。
但是,当我尝试使用
添加新单元格时[self.tableView insertRowsAtIndexPaths:[[NSArray alloc] initWithObjects: indexPath, nil] withRowAnimation:UITableViewRowAnimationAutomatic];
结果是一个半初始化和一半绘制的新单元格。当我选择单元格时,其余部分会绘制,但其中一部分未初始化。
感觉故事板在从dequeueReusableCellWithIdentifier
返回单元格时尚未完成为单元格创建UI对象。
我假设我做了一些愚蠢的事情,但我重新阅读了UITableView手册,并查看了我的所有代码,而我能想到的只是有一个种族状况以某种方式发生。
顺便提一下,每次运行时故障模式都是一样的 - 以这种方式创建的第二个和第三个单元格看起来总是错误,然后第4个似乎没问题但是没有获得焦点,第5个再次失败并且第6个失败效果很好。
更新09/06/15 我继续尝试旧的"评论几乎所有的东西,看看它是否有效"诀窍,我发现似乎导致问题的那些线是:
UILabel *label;
label = (UILabel *)[cell viewWithTag:1];
label.text = [NSString stringWithFormat:@"%d", numerator[indexPath.row]];
在tableView:cellForRowAtIndexPath
方法中。
因此,似乎对此时更新标签文本感到不满意,这是一种耻辱,因为标签在没有更新的情况下是不好的。
在这种方法中更新像这样的标签,或者我只是使用错误的视图类型?