2011-07-06 53 views
0

我坚持从一个ViewController传递数据到另一个。该方案是: 我有2个ViewControllers命名为:SearchDomainController和LoginViewController。我想要做的是将SearchDomainController的字符串值传递给LoginViewController中的UITExtfield。传递数据到ViewControllers之间的UITextField

在LoginViewController中,我声明了IBOutlet UITextField *domainField;并且还有一个属性@property(nonatomic,retain) UITextField *domainField

问题是,当我在SearchDomainController中创建LoginViewController的新实例并尝试使用_loginViewController.domainField.text = @"Some text"; 时,文本在LoginViewController上的UItextField中永远不会改变。 我错过了什么?什么是这种问题的最佳解决方案? Thanx

回答

1

我的猜测是_loginViewController.domainField当时为零,这可能是因为视图尚未加载,而标签是在视图加载时(通过笔尖)而不是视图加载时创建的控制器对象被创建。

为了在传递值时不依赖于视图完全加载,我会使用一个单独的属性来传递标题,即_loginViewController.domainFieldText = @"Some text";。然后在_loginViewControllerviewDidLoad中,将值domaonFieldText分配给实际标签。

或者,确保UILabel实例已创建,而不是从其他视图控制器设置其文本时为零。

+0

我正在考虑使用委托模式来解决这个问题。在SearchViewController中创建一个委托并将值传递给LoginViewController。可以这样解决吗? – Haris

+0

我不建议在这里使用委托。代表们主要是在你不能控制的课堂上收到关于内部行为的通知。不是简单地传递信息,这似乎是你在这里做的。 –

+0

谢谢你们的帮助。现在问题解决了。 – Haris

0

设置字符串作为AppDelegate中在一个视图控制器的property,你可以从另一个检索它,并将它设置为textField.text

相关问题