首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift UISwipeActionsConfiguration与segue

Swift UISwipeActionsConfiguration与segue
EN

Stack Overflow用户
提问于 2022-02-21 08:42:50
回答 1查看 35关注 0票数 0

我添加了leadingSwipeAction“编辑”按钮。然而,当我按下模拟器中的“编辑”按钮时,应用程序就会崩溃,并在**准备(用于:发送方:)**方法中显示"Thread 1: signal SIGBART“。

我看到了类似的问题,但他们的解决方案没有帮助。我是新手,不知道问题出在哪里。

代码语言:javascript
复制
`//my edit button code`
   override func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
        
        let edit = UIContextualAction(style: .normal, title: "Edit") { [self] (contextualAction, view, actionPrformed: (Bool) -> Void) in
            
            //TODO:
            
            performSegue(withIdentifier: "EditItem", sender: self)
            actionPrformed(true)
        }
        
            return UISwipeActionsConfiguration(actions: [edit])
        }

// segue

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        
        if segue.identifier == "AddItem" {
            let controller = segue.destination as! AddAndEditItemViewController
            controller.delegate = self
                    }
       
        else if segue.identifier == "EditItem" {
            let controller = segue.destination as! AddAndEditItemViewController
            controller.delegate = self
        
        if let indexPath = tableView.indexPath(
                  for: sender as! UITableViewCell) { //erorr shows here
                  controller.itemToEdit = items[indexPath.row]
                }                                           
    }

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-21 08:44:42

self在这里

代码语言:javascript
复制
performSegue(withIdentifier: "EditItem", sender: self)

是vc实例本身而不是单元格,您需要传递indexPath.row。

代码语言:javascript
复制
performSegue(withIdentifier: "EditItem", sender: indexPath.row)

然后

代码语言:javascript
复制
let index = sender as! Int
controller.itemToEdit = items[index] 

您也可以使用

代码语言:javascript
复制
guard let index = tableView.indexPathForSelectedRow?.row else { return }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71203372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档