【问题标题】:segue getting twise call in swiftsegue 迅速接到电话
【发布时间】:2016-05-27 09:31:31
【问题描述】:

我有两个视图控制器,一个是 ScheduleController,另一个是 EditShiftController。在 ScheduleController 我有一个表视图名称是 scheduleTable。在 scheduleTable 我有一个带有 identifier ScheduleWithData 的单元格。在这个单元格中,我有两个不同的按钮按钮 EDIT 和按钮 DELETE。我直接将按钮 EDITEditShiftController 与 segue identifier editShiftSegue 连接起来。

TableViewCell.swift

的代码
var editShiftClick: (() -> Void)? = nil    
@IBAction func editShiftBtn(sender: AnyObject) {
    if let onButtonTapped = self.editShiftClick {
        onButtonTapped()
    }
}

ScheduleController.swift

的代码
myCell!.editShiftClick = {
            self.performSegueWithIdentifier("editShiftSegue", sender: dataTemp[indexPath.row].id)
        }

ScheduleController.swift

中prepareSegue的函数
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if (segue.identifier == "editShiftSegue") {
        print("senderIndexPath=\(sender)")
        if (sender != nil) {
        let svc = segue.destinationViewController as! EditShiftViewController;
        svc.label = String(sender)
        }
    }
}

Segue 的截图 enter image description here

当我点击 EDIT 按钮然后 EditShiftController 接到两次电话我不知道为什么 请,任何人都可以在这里帮助我,谢谢你提前

【问题讨论】:

  • TableViewCell.swift 中的onButtonTaped() 方法是什么?
  • @Anthony Roani 这是在表格视图单元格中使用按钮单击事件的方式谢谢
  • 这个方法你在做什么?
  • @AnthonyRoani 这是 swift 的默认功能,当您单击按钮时会触发该功能

标签: ios swift uitableview segue


【解决方案1】:
 myCell!.editShiftClick = {
        //self.performSegueWithIdentifier("editShiftSegue", sender: dataTemp[indexPath.row].id)
    }

评论self.performSegueWithIdentifier("editShiftSegue", sender: dataTemp[indexPath.row].id)这一行,因为如果你已经将编辑按钮直接连接到segue,那么也不需要以编程方式执行egue!

更新:

  myCell!.editShiftClick = {
        self.performSegueWithIdentifier("editShiftSegue", sender: self)
    }

不要评论该行并删除从编辑按钮给出的那个segue。从viewcontroller to viewcontroller 给出segue 并给出标识符editShiftSegue 然后按照上面的代码执行segue。

【讨论】:

  • 回答检查我正在尝试做的事情,两次调用已经停止但现在的问题是我将如何获得我发送的 id ............self .performSegueWithIdentifier("editShiftSegue", sender: dataTemp[indexPath.row].id).........在这一行
  • 我没有收到你的评论!
  • 我试图通过点击编辑按钮发送一个元素的 id,然后取消注释你告诉我我正在获取 id 但现在我没有得到它只是简单的 EditShiftController
  • Answer Checked now I am getting this error Terminating app due to unaught exception 'NSInvalidArgumentException', reason: 'Receiver () has no segue with identifier 'editShiftSegue''跨度>
  • 表示你没有正确设置segue标识符。 Ctrl + 从 VC 拖动到另一个 VC 以连接 segue。然后选择该 segue 并从 attribute inspector 设置标识符为 editShiftSegue 或者您要设置的内容并在 performSegueWithIdentifier 方法中使用相同的标识符
猜你喜欢
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-18
  • 2021-09-26
  • 2014-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多