两个UIViewControllers之间传递变量的时间

时间:2011-11-23 15:26:47

标签: objective-c xcode sqlite uiviewcontroller viewdidload

不确定如何提出这个问题所以它会有意义,但让我尝试一下。我的应用程序打开一个UIViewController,然后调用另一个。当它打开另一个时,它会成功地在文本字段中放置一个变量。当用户关闭第二个UIViewController并返回第一个UIViewController时,我传回变量并将其放在文本字段中。这一点都很成功。变量正在来回传递,没有任何问题。

所以这就是我要做的事情:在返回第一个UIViewController时,我运行一个查询语句,该语句使用textfield中的变量作为从SQLite表中提取记录的键。我使用NSLog来检查代码,我看到textfield是空的,但是当UIViewController出现时,变量在textfield中。

到目前为止和我在一起吗?我希望如此......

我在ViewDidLoad中运行查询。我认为ViewDidLoad在将变量从第二个复制到文本字段之前正在运行。

我的主要问题是:我应该在ViewDidLoad中运行我的查询语句,还是请在文本字段中获取变量。基本上,我想做的就是从另一个UIViewController返回时根据textfield中的值拉取记录。

谢谢!

2 个答案:

答案 0 :(得分:1)

viewDidLoad仅在从nib加载视图控制器时调用。如果从另一个视图控制器切换回一个视图控制器,则不会再次执行。尝试将代码放在viewWillAppear中。

答案 1 :(得分:1)

从技术上讲,如果原始视图从未被取消分配,则不会调用viewDidLoad。将调用的委托方法是viewWillAppear:viewDidAppear:。 您可以使用自定义委托方法将第二个viewController中的值传递回第一个。您应该记住的是,您应该使用委托方法传回的NSString进行查询,并在viewWillAppear:期间将其放在textField中。

希望这有帮助!