如何传递已使用 prepareForSegue 更改的变量
How to pass variable that has been altered with prepareForSegue
如何使用 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
}
the chooseFriend
UIButton
is a segue to the view controller that I am attempting to pass the variable to.
由于 segue 是由 UIButton
触发的,prepareForSegue
的调用发生在 在 UIButton
的操作调用之前,即chooseFriend
。 chooseFriend
变量尚未设置,因此 prepareForSegue
看到一个空值。
您可以通过将这两种方法合二为一来解决此问题:将发件人转换为 UIButton
,获取其 tag
,然后设置变量,如下所示:
override func prepareForSegue(segue: UIStoryboardSegue, senderObj: AnyObject?) {
if(segue.identifier == "toChat") {
let sender = senderObj as! UIButton
let requestIndex = sender.tag
let theVC: chatViewController = segue.destinationViewController as! chatViewController
theVC.friendChosen = self.friends.objectAtIndex(requestIndex) as! String
}
}
如何使用 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
}
the
chooseFriend
UIButton
is a segue to the view controller that I am attempting to pass the variable to.
由于 segue 是由 UIButton
触发的,prepareForSegue
的调用发生在 在 UIButton
的操作调用之前,即chooseFriend
。 chooseFriend
变量尚未设置,因此 prepareForSegue
看到一个空值。
您可以通过将这两种方法合二为一来解决此问题:将发件人转换为 UIButton
,获取其 tag
,然后设置变量,如下所示:
override func prepareForSegue(segue: UIStoryboardSegue, senderObj: AnyObject?) {
if(segue.identifier == "toChat") {
let sender = senderObj as! UIButton
let requestIndex = sender.tag
let theVC: chatViewController = segue.destinationViewController as! chatViewController
theVC.friendChosen = self.friends.objectAtIndex(requestIndex) as! String
}
}