以编程方式在静态UITableView中添加行

时间:2017-10-04 16:17:00

标签: ios swift uitableview

我有一个静态UITableView,如第一张图片所示,但现在我需要添加一个带有Button的行,当我触摸它时会向表格添加一个动态单元格,如第二张图片所示,问题是我无法将新单元格添加到静态UITableview。 实现这一目标的最佳做法是什么?

first image second image

1 个答案:

答案 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中对象的数量