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为零。为什么?我应该如何检查发件人?
答案 0 :(得分:2)
您(开发人员)应该知道CONFIG -= qml_debug
的发件人是谁。只有三种可能性:
prepare(for
是sender
。UITableViewCell
是sender
。UIViewController
,则performSegue
就是您在sender
参数(包括sender
)中传递的任何内容。仅当您在按钮的nil)
中调用performSegue
并将按钮实例作为IBAction
传递时,您的代码才能工作
sender