我试图理解发送者值在segues中是如何工作的。
在我的代码中的某些地方都有效:
performSegueWithIdentifier("mySegue", sender: self)
performSegueWithIdentifier("mySegue", sender: sender)
但是拥有自我/发件人之间的区别是什么?
答案 0 :(得分:14)
正如@ iosDev82在他的回答中所说,发送者是一个可选项,用于命名触发segue的对象(如果有的话)。
如果通过视图控制器中的代码触发segue,则可以传递视图控制器(self),或者可以传递nil。它只是传递给prepareForSegue的一条信息(再次像iOSDv82所说的那样。)
如果在IBAction方法的代码中触发segue,您的IBAction可能拥有它自己的发送者参数(通常是一个按钮。)在这种情况下,您可以将sender参数传递给{{1}方法。
示例:
performSegueWithIdentifier
答案 1 :(得分:2)
sender
只是一个与此函数一起传递的参数。
稍后会在函数prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!)
中收到此消息,您可以在此处获取此对象,并根据发件人的身份做出决定。
答案 2 :(得分:0)
作为示例,假设您要编辑 IndexPath 的内容。你打电话
performSegue(withIdentifier: "showItem", sender: indexPath)
从任何地方( indexPath 的类型为 IndexPath )。
然后,在prepare(segue:sender:)
内,您可以:
...
switch segue.identifier {
case "showItem"?:
// Figure out which row was just tapped
if let row = tableView.indexPathForSelectedRow?.row {
editRow(segue, row)
} else {
let selectedIndexPath = sender as! IndexPath
editRow(segue, selectedIndexPath.row)
}
...