在xCode中使用故事板如何在不同的视图中更改标签的值?

时间:2015-08-20 14:41:34

标签: ios objective-c storyboard

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

_label.text = variable1;

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

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

2 个答案:

答案 0 :(得分:1)

不幸的是,无法在故事板中的不同场景之间连接IBOutlet

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

使用prepareForSegue

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

使用委托

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

@interface ViewController1: UIViewController {}

@property (nonatomic,weak) ViewController2 *controllerThatIWantToModify;

通过这样的设置,您可以致电:

self.controllerThatIWantToModify.label.text = variable1;

答案 1 :(得分:0)

你使用故事板,所以你的第一个viewController(带按钮)必须有一个segue到你的第二个(带有标签)。

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

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

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

为此,您需要设置插座,以便您从viewController访问标签。

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

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