在视图之间传递数据不起作用

我知道这个问题被问了100次,但我无法弄清楚我做错了什么。

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

  • 我在Storyboard中从我的Button( ViewControllerA )创建了一个Segue到我的ViewControllerB并将其称为“TestSegue”。
  • 在我的ViewControllerA.h写入#import "ViewControllerB.h
  • 我在我的ViewControllerA.m中编写了这个代码:
  • -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if([segue.identifier isEqualToString:@"TestSegue"]){
    
    ViewControllerB *controller = (ViewControllerB *)segue.destinationViewController;
    controller.TestLabel.text = @"TEST!";}}
    

    在我的ViewControllerB中,TestLabel没有任何反应......

    任何人都可以看到我做错了什么吗?

    提前致谢

    编辑:现在工作感谢rpledge。

    新代码:

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    
    if([segue.identifier isEqualToString:@"TestSegue"]){
    
    ViewControllerB *controller = (ViewControllerB *)segue.destinationViewController;
    controller.TestString = @"TEST!";}}
    

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

    我不喜欢公开用户界面元素,我建议你为你的NSString *添加@property到目标视图控制器,然后在viewDidLoad中设置UILabel.text:


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

    @property (nonatomic) NSString *var;
    

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

    链接地址: http://www.djcxy.com/p/61273.html

    上一篇: Passing data between views not working

    下一篇: How do I debug a segue from TableViewCell in Xcode?