swift performSegueWithIdentifier发送者值

时间:2015-08-17 19:58:52

标签: ios swift segue

我试图理解发送者值在segues中是如何工作的。

在我的代码中的某些地方都有效:

performSegueWithIdentifier("mySegue", sender: self)

performSegueWithIdentifier("mySegue", sender: sender)

但是拥有自我/发件人之间的区别是什么?

3 个答案:

答案 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)
     }
...