我有一个静态UITableView,如第一张图片所示,但现在我需要添加一个带有Button的行,当我触摸它时会向表格添加一个动态单元格,如第二张图片所示,问题是我无法将新单元格添加到静态UITableview。 实现这一目标的最佳做法是什么?
答案 0 :(得分:0)
基本上静态TableView不应该在运行时更改(单元格内容除外)。这在docs中明确提到:
当表格未更改其布局时使用静态单元格,无论其显示的具体信息如何。
在这种情况下,最佳做法是创建一个动态电视并用适当数量的单元格填充它。您需要使用DataSource delegate来执行此操作。 DataSource本身通常通过字典或数组完成。
E.g。你有一个dict'phoneNumbers'和一个应该添加新按钮的按钮。
首先,您将一个选择器添加到cellForRowAtIndexPath中的按钮:例如via标签。然后按钮操作将如下所示:
-(void)yourButtonClicked:(UIButton*)sender
{
[self.phoneNumbers setObject:phoneNumber forKey:numberKey];
[self.tableView reloadData];
}
//Swift
func yourButtonClicked(sender: UIButton) {
self.phoneNumbers["numberKey"] = phoneNumber
self.tableView.reloadData()
}
(对不起,这是Obj-C,但我很确定swift在这一点上并没有太大的不同)
在对DataSource对象进行更改后,需要使用reloadData来刷新TableView布局。在这种情况下,它非常接近'重绘'。在联系人应用程序的图像上,您显示的对象是'(555)555-5555'NSString,键可能是'其他'。您可以按照自己喜欢的方式使用和存储这些
所以你毕竟只需要设置numberOfRowsInSection:这样对于你想要添加单元格的部分,它会返回字典phoneNumbers中对象的数量