微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

选择表视图控制器单元时,视图控制器将不会出现

如何解决选择表视图控制器单元时,视图控制器将不会出现

我对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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。