我使用的是Swift 3,Xcode 8.2。
我试图找出如何从我的选项卡式视图控制器的另一个选项卡中将单元格插入到我的表视图中。
MyTableView
class MyTableView: UITableViewController {
var items = ["Item 1", "Item 2", "Item 3"]
...
func insertCell() {
items.append("Item \(items.count + 1)")
tableView.reloadData()
}
如果我在该表视图页面上创建一个条形按钮项,我可以成功插入项目,没问题。当我尝试从另一个视图控制器触发它时,没有任何反应。
另一个标签
@IBAction func triggerInsert(_ sender: Any) {
//MyTableView().insertCell() // this doesn't work
//MyTableView().items.append("Item") // these two lines don't work either
//MyTableView().tableView.reloadData()
// also tried setting a boolean in here to be read from MyTableView but that didn't work either
}
我不太确定这样做的“正确”方法是什么。任何帮助将不胜感激。
答案 0 :(得分:2)
问题是你一直试图使用的表达式:
MyTableView()
创建一个全新且独立的表视图控制器。但这显然不是你想要做的。您想要与现有的表视图控制器进行通信,就像您说的那样,它是标签栏控制器中的另一个选项卡。
例如,如果MyTableView是第一个选项卡而OtherViewController是第二个选项卡,那么OtherViewController可能会说:
self.tabBarController!.viewControllers![0] as! MyTableView
...作为获取引用到现有表视图控制器的一种方式。