【问题标题】:Using storyboarding in xCode how can I change the value of a label from a different view?在 xCode 中使用故事板如何从不同的视图更改标签的值?
【发布时间】:2015-08-20 23:02:26
【问题描述】:

我正在编写一个使用故事板的应用,我想通过单击前一个视图中的按钮来更新一个视图中的标签。

_label.text = variable1;

是我用来更改标签值的行,当我单击按钮时,它在下一个视图中。使用这种方法,我可以轻松地更改与按钮相同的视图中的标签,但是当我转到下一个视图并看到空标签时,它什么也不做。

我尝试到处寻找并发现了类似的问题,但找不到任何对我有用的东西,所以任何解决方案都将不胜感激!

【问题讨论】:

    标签: ios objective-c storyboard


    【解决方案1】:

    很遗憾,无法在情节提要的不同场景之间连接IBOutlets。

    很难提出一些精确的解决方案,因为您必须提供有关您拥有的设置的更多详细信息。尽管如此,还是可以概述一些可能的解决方案:

    使用prepareForSegue

    如果您要修改的视图控制器在执行segue后出现,您可以在prepareForSegue函数中自定义其外观。

    使用委托

    您可以将想要修改另一个视图控制器的视图控制器指定为其委托。比如ViewController1要修改ViewController2

    @interface ViewController1: UIViewController {}
        
    @property (nonatomic,weak) ViewController2 *controllerThatIWantToModify;
    

    通过这样的设置,您可以调用:

    self.controllerThatIWantToModify.label.text = variable1;
    

    【讨论】:

      【解决方案2】:

      您使用情节提要,因此从您的第一个 viewController(带有按钮)到您的第二个(带有标签)之间必须有一个 segue。

      如果是这种情况,您可以通过第一个视图控制器的prepareForSegue 方法设置第二个视图控制器的标签。

      使用 segue 对象调用此方法,该对象具有 destinationViewController 属性,这是您的第二个视图控制器。

      如果你有几个来自这个viewController的segue,你应该检查它是否是正确的segue然后设置它。

      为此,您需要设置可以让您从 viewController 访问标签的 outlet。

      然后您可以在视图控制器中编写setUpLabelsWith:(NSString)text1 ... 方法,或者直接从第一个视图控制器访问插座(假设它们不是私有的)。

      是的,这假设您的第二个视图控制器有一个自定义类。

      【讨论】:

        猜你喜欢
        • 2020-12-03
        • 1970-01-01
        • 2012-02-10
        • 2013-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-15
        • 2014-11-23
        相关资源
        最近更新 更多