我正在创建一个应用程序,其中storyboard中有6个视图控制器。问题是数据在默认视图控制器和我添加的第一个(比如A和B)之间共享。我正在使用prepareforseque方法传递数据。当我添加两个视图控制器时问题就开始了。让我们说C和D我创建了两个新的swift文件并更改了两个视图控制器类名。我在C中创建了一个文本框和按钮,在D中标记了当我按下按钮时,文本字段的值没有传递到D视图控制器,尽管我使用了与A和B相同的方法和代码。当我想在两个新添加的视图控制器之间传递数据时,我必须做任何其他事情。
第一个viewcontroller,当按下按钮时,需要传递值1:
class PlaySelectMenu: UIViewController {
var value = Int()
@IBAction func twotofive(sender: AnyObject) {
value = 1
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let nextView : PlayGameView = segue.destinationViewController as! PlayGameView
nextView.x = value
}
}
接收值并打印它的第二个视图控制器
import Foundation
import UIKit
class PlayGameView: UIViewController{
var x = Int()
override func viewDidLoad() {
super.viewDidLoad()
print(x)
}
}
这里我已经添加了来自对象库的视图控制器,而没有使用默认情况下存在于storyboard中的默认控制器。我不知道为什么这两个viewcontroller不工作。请帮忙。 关心开发
答案 0 :(得分:0)
一种解决方案是将数据写入NSUserDefaults,然后从另一个视图控制器中的NSUserDefaults读回。可能不是在两个视图控制器之间共享数据的正确或正确的方法,但它对我来说是一个可靠的工作。
除此之外,您需要分享您的代码,以便我们可以看到发生了什么。
答案 1 :(得分:0)
您是否也可以在控制器C& D.如果您将前两个控制器中的代码复制/粘贴到另外两个控制器中,您确定在prepareForSegue
方法中更改了目标segue的名称吗?
答案 2 :(得分:0)
假设您已在Storyboard中创建了segue:
您需要做的就是在public class Event extends RealmObject
{
...
private RealmList<Game> games;
}
中添加所有必需的更新,因为prepareForSegue
之后会调用twotofive
。
prepareForSegue
答案 3 :(得分:0)
由于您已从按钮单击连接segue到视图控制器,当您按下按钮时会自动调用segue。不要将segue从按钮连接到VC,而是将VC连接到VC。然后在最后添加以下行的按钮单击方法中:
git reset --hard HEAD@{2}
这将调用您的prepareForSegue。如果您使用VC中的segue调用多个VC,那么您可以使用segue.identifier来检查调用哪个VC,如下所示
@IBAction func twotofive(sender: AnyObject) {
value = 1
self.performSegueWithIdentifier("<Name of the segue identifier>", sender: self)
}