1

我知道这个问题被问了大约 100 次,但我就是不知道我做错了什么。

这是我的第二个 iOS 应用。我想通过按下 ViewControllerA 中的按钮来修改 ViewControllerB 中的标签。

  1. 我在 Storyboard 中从我的 Button ( ViewControllerA) 到 my制作了一个 Segue,ViewControllerB并将其命名为“TestSegue”。
  2. #import "ViewControllerB.h在我的ViewControllerA.h
  3. 我在 ViewControllerA.m 中编写了这段代码:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

if([segue.identifier isEqualToString:@"TestSegue"]){

ViewControllerB *controller = (ViewControllerB *)segue.destinationViewController;
controller.TestLabel.text = @"TEST!";}}

In my ViewControllerB nothing happens with the TestLabel...

Can anybody see what I did wrong?

Thanks in advance

Edit: Works now thanks to rpledge.

New Code:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

if([segue.identifier isEqualToString:@"TestSegue"]){

ViewControllerB *controller = (ViewControllerB *)segue.destinationViewController;
controller.TestString = @"TEST!";}}
4

2 回答 2

1

这可能是因为在运行 viewDidLoad 之前不会创建 TextLabel UI 元素,这将在 prepareForSegue 之后发生:

无论如何,我不喜欢公开公开视图的 UI 元素,我建议您将 NSString* 的 @property 添加到目标视图控制器,然后在 viewDidLoad 中设置 UILabel.text:

于 2013-03-02T17:46:05.417 回答
0

不要将它分配给控件,而是分配给实例变量。

@property (nonatomic) NSString *var;

然后在 viewDidLoad 中将其分配给控件。

于 2013-03-02T17:48:36.570 回答