如何使用自实例化后已更改的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
}
答案 0 :(得分:1)
chooseFriend
UIButton
是我试图将变量传递给视图控制器的一个segue。
由于UIButton
触发了segue,因此prepareForSegue
的调用在<{em>} UIButton
的操作调用之前发生了,即{{} 1}}。尚未设置chooseFriend
变量,因此chooseFriend
会看到空值。
您可以通过将两种方法合并为一种来解决此问题:将发件人转换为prepareForSegue
,取其UIButton
,并设置变量,如下所示:
tag