根据用户输入,我需要从我的一个表格视图的单元格中删除公开的V形符号。在控制器的viewDidAppear
方法中,我有以下代码:
NSIndexPath *section0Row10 = [NSIndexPath indexPathForRow:10 inSection:0];
[[self.tableView cellForRowAtIndexPath:section0Row10] setAccessoryType:UITableViewCellAccessoryNone];
什么都没发生。我很想知道我做错了什么。
更新:
这些是单个部分中的静态分组单元格。我使用故事板构建了表视图,并通过控制从表视图拖动到视图控制器的头文件中,将我需要以编程方式更改的每个字段(通常为UILabel
)设置为命名出口。 / p>
例如,我有:
@property (weak, nonatomic) IBOutlet UILabel *symbolLabel;
在我的视图控制器的.h文件中。在.m文件中,我在viewDidAppear
方法中包含以下行:
self.symbolLabel.text = self.dataSource.symbol;
通过这种方式,我根本不需要实现cellForRowAtIndexPath:
。这是不正确的做事方式吗?
另外:当表格视图出现时,我想删除其V形符号的单元格位于屏幕底部以下。
感谢您的帮助和耐心。
答案 0 :(得分:1)
当您的单元格未显示在屏幕上时,cellForRowAtIndexPath
会返回nil
。这是合乎逻辑的:单元格被重新用于保存内存,因此不必显示的单元格被简单地重新排列,以便它们属于当前可见的索引路径。
要解决此问题,请不要从外部明确设置单元格的显示样式,而是在
中进行设置tableView:cellForRowAtIndexPath:
方法。您可以将附件类型的数值或条件存储在e中。 G。在NSArray中。
答案 1 :(得分:0)
重新加载表格。或者更好,只是那个细胞。
答案 2 :(得分:0)
尝试重新加载单元格:
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:section0Row10] withAnimation:UITableViewRowAnimationAutomatic];
答案 3 :(得分:0)
我认为您需要调用@max _
所述的重载功能[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:section0Row10] withAnimation:UITableViewRowAnimationAutomatic];
但是当你调用它时,它将使用你的cellForRowAtIndexPath
方法来获取要加载的新单元格。因此,您需要确保从重新加载方法中指定的索引路径返回的该方法的单元格没有accessoryView
。
也许在你的cellForRowAtIndexPath方法中设置一个断点,看看在重新加载被触发后会发生什么。
答案 4 :(得分:0)
替换
{
NSIndexPath *section0Row10 = [NSIndexPath indexPathForRow:10 inSection:0];
[[self.tableView cellForRowAtIndexPath:section0Row10] setAccessoryType:UITableViewCellAccessoryNone];`
}
使用,
NSIndexPath *section0Row10 = [NSIndexPath indexPathForRow:10 inSection:0];
[[self tableView:self.tableView cellForRowAtIndexPath:section0Row10] setAccessoryType:UITableViewCellAccessoryNone];
您没有调用CellForRowAtIndexPath:
的实现....这就是问题:)