如何在视图控制器之间链接插座?

时间:2012-08-01 00:04:38

标签: iphone objective-c ios xcode

我正在创建一个应用程序,目前有6个视图控制器,现在在视图控制器6中我有一个文本字段,当他们编辑它时,它需要在视图控制器3中编辑标签,如何链接在viewcontroller6.h在故事板中查看控制器3中的某些内容?我知道它很复杂,但任何帮助都会非常棒! :)谢谢

3 个答案:

答案 0 :(得分:1)

您无法在故事板中将插座从vc6链接到vc3。有许多方法可以将数据从vc6传递到vc3:

  1. 使用委托模式(如Dustin所述)将文本字段数据从vc6传递到vc3。但是,如果您的视图控制器按顺序从vc3到vc4链接到vc5到vc6,则使用此方法可能会非常繁琐。

  2. 使用共享实例(单例)。我使用here中的代码。如果您要传递大量数据,我会推荐这种方法。

  3. 使用NSUserDefault记住文本字段数据,在vc3中显示标签时,使用[NSUserDefaults standardUserDefaults]读回值。好的,如果你只有很少的数据传递。此方法的另一个优点是您可以记住下次启动时的数据,并且可以在vc6中的textfield显示给用户输入之前正确显示vc3中的标签。

答案 1 :(得分:1)

首先,在你的viewcontroller6中,你需要#import" viewcontroller3.h"。 然后在viewcontroller6.m中,您可以创建viewcontroller3的实例。然后,您可以访问所有viewcontroller3的数据。您可以从viewcontroller6.m设置viewcontroller3实例中的数据并推送到viewcontroller3的视图,您的数据应该在那里。

虽然如果它是一个标签,你可能需要在viewcontroller3.h中创建NSString * stringText的属性,并在viewcontroller3.m文件中合成它,然后在视图controller6中,将该字符串设置为在viewcontroller6。并且在您将其推送到视图控制器3之后,在视图controller3的viewdidload()中执行类似label.text = stringText的操作;

现在,viewcontroller3中的标签应该更新为stringText中的任何内容..这是从viewcontroller6设置的。

答案 2 :(得分:0)

之前我已经回答了类似的问题:

示例:Delegates

快速回答是你无法真正将vc6中的插座“链接”到vc3中的某些内容,就像在IB中使用控件拖动一样。完成所需内容的最佳方法是使用委托模式,我在链接的问题中概述了这一模式。

这需要一些额外的工作,但这是一项非常重要的技能。