gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:54:02 24 4
gpt4 key购买 nike


如何使用 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 的调用' s Action ,即 chooseFriendchooseFriend 变量尚未设置,因此 prepareForSegue 看到一个空值。

您可以通过将这两种方法合二为一来解决此问题:将发送者转换为 UIButton,获取其标签,然后设置变量,如下所示:

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
}
}

关于ios - 如何传递已使用 prepareForSegue 更改的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34170309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com