问题描述
我对Swift / Xcode还是比较陌生,当试图选择一个按钮(添加按钮)或选择一个表格视图单元格(允许他们进行编辑)时,我试图使视图控制器以不同的值显示。但是,尽管我将转换链接到按钮时,segue确实起作用,但是我选择行时并没有收到任何响应,包括我已输入用于测试的打印语句。该代码与我先前编写的使当前表格视图显示的功能正常的表格视图单元的代码相同。这可能是情节提要的问题吗?
Storyboard screenshot with cell settings
这是我的代码:
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
return items.count
}
override func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCell",for: indexPath)
cell.textLabel?.text = items[indexPath.row].name
return cell
}
func tableView(tableView: UITableView,didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("Selected")
}
//Sends current receipt information to the AddItemViewController display when tapped
override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
if segue.identifier == "AddItemViewSegue" || segue.identifier == "EditItemViewSegue" {
let destination = segue.destination as? AddItemViewController
destination?.currentReceipt = currentReceipt
let index = tableView.indexPathForSelectedRow?.row
print("test")
if segue.identifier == "AddItemViewSegue" {
destination?.addMessage = "Add a New Item to Your Receipt"
destination?.buttonMessage = "Add Item"
}
else {
print("test1")
destination?.addMessage = "Edit an Item in Your Receipt"
destination?.buttonMessage = "Edit Item"
destination?.currentItem = items[index!]
}
}
}
我也查看了此论坛帖子,因为它与我的类似,但是我无法应用任何建议的修复程序。 https://developer.apple.com/forums/thread/14842
解决方法
首先,didSelectRow
方法是错误的。该代码是Swift 2代码。正确的签名是
override func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) { ...
您是否不知道为什么编译器不抱怨缺少的override
?
而不是从视图控制器中,将表视图单元格中的segue(为什么有2个)重新连接到目标控制器,然后删除didSelectRow