如何传递已使用prepareForSegue更改的变量

时间:2015-12-09 03:37:17

标签: ios swift uistoryboardsegue


如何使用自实例化后已更改的prepareForSegue传递变量?当我尝试使用prepareForSegue传递变量时,它会发送实例化的值,而不是我将其更改为的值。
代码:

var friendChosen:String!

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if(segue.identifier == "toChat") {
        let theVC: chatViewController = segue.destinationViewController as! chatViewController
        theVC.friendChosen = friendChosen
    }
}

当用户点击按钮时,friendChosen变量应该取名字的值。它确实成功地将它的值打印到终端,但是当调用segue时(在它被改变之后)似乎没有注册。

func chooseFriend(sender: UIButton) {
    let requestIndex = sender.tag
    self.friendChosen = self.friends.objectAtIndex(requestIndex) as! String
}

1 个答案:

答案 0 :(得分:1)

  

chooseFriend UIButton是我试图将变量传递给视图控制器的一个segue。

由于UIButton触发了segue,因此prepareForSegue的调用在<{em>} UIButton的操作调用之前发生了,即{{} 1}}。尚未设置chooseFriend变量,因此chooseFriend会看到空值。

您可以通过将两种方法合并为一种来解决此问题:将发件人转换为prepareForSegue,取其UIButton,并设置变量,如下所示:

tag