下垂了吗?到UIBarButtonItem

时间:2018-09-06 13:25:08

标签: ios swift xcode sender

override func prepare(for segue: UIStoryboardSegue, sender:
        Any?) {
    if segue.identifier == "detailSegue" {
        let indexPath = tableView.indexPathForSelectedRow!
        let card = cards[indexPath.row]
        let detailTableViewController = segue.destination as! DetailTableViewController
        detailTableViewController.card = card
        detailTableViewController.picture = card.image
    } else if segue.identifier == "addEditSegue" {
        let addEditTableViewController = segue.destination as! AddEditTableViewController
        let buttonPressed = sender as? UIBarButtonItem
        if buttonPressed == cardsAddButton {
            addEditTableViewController.isNewCard = true
        } else {
            addEditTableViewController.isNewCard = false
        }
    }
}

嗨,我是Swift新手。我需要通过点击UIBarButtonItem(cardsAddButton)或点击UITableView的单元格来执行相同的操作。使用打印语句,我发现在点击cardsAddButton时buttonPressed为零。为什么?我应该如何检查发件人?

1 个答案:

答案 0 :(得分:2)

您(开发人员)应该知道CONFIG -= qml_debug 的发件人是谁。只有三种可能性:

  1. 如果将segue连接到Interface Builder中的表格视图单元格,则prepare(forsender
  2. 如果将segue连接到Interface Builder中的视图控制器,则UITableViewCellsender
  3. 如果在代码中调用了UIViewController,则performSegue就是您在sender参数(包括sender)中传递的任何内容。

仅当您在按钮的nil)中调用performSegue并将按钮实例作为IBAction传递时,您的代码才能工作

sender