【问题标题】:Editing Text On Separate View Controller在单独的视图控制器上编辑文本
【发布时间】:2014-07-07 18:29:43
【问题描述】:

我是 iOS 新手,正在尝试找出一些可能是基本的东西。我有两个 UIView,每个页面上有四个按钮,每个按钮下面有四个标签。基本上,如果我按下视图控制器 1 上的按钮 1,我希望视图控制器 2 上的所有标签都简单地读取“1”。这是一个更好的视觉图像:

现在,我在 IB 中连接了从按钮 1 到视图控制器 2 的模态转换,并调用此方法:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([segue.identifier isEqualToString:@"number1"]){
        ViewController2 *controller2 = [[ViewController2 alloc]init];
        controller2.label1.text = @"1";
            NSLog(@"Fired");
            NSLog(@"%@", controller2.label1.text);
    }
}

它可以很好地转换,但不会更改标签。 NSLogs 显示该方法确实触发了,但标签为空。有谁知道我需要在这里更改什么?

我在 ViewController2 中声明了我的标签,如下所示:

@interface ViewController2 : UIViewController {
    UILabel *label1;
}

@property (strong, nonatomic) IBOutlet UILabel *label1;

@end

这是 label1 的连接检查器:

【问题讨论】:

    标签: ios uiviewcontroller transition


    【解决方案1】:

    您正在创建一个全新的视图控制器实例。情节提要为您创建视图控制器,并在prepareForSegue:sender: 方法中将其传递给您进行配置。你可以这样访问它:

    ViewController2 *controller2 = (ViewController2 *)segue.destinationViewController;
    // configure controller2 here
    

    另外,当调用prepareForSegue: 时,不会设置视图控制器上的出口。您需要将NSString 作为第二个视图控制器上的属性。稍后,您可以使用viewDidLoad 将标签的文本设置为您之前定义的NSString 属性所持有的值。

    【讨论】:

    • 谢谢。我将行更改为您发布的行,但它仍然没有更改标签。我不知道为什么,这令人困惑。
    • 标签是否正确连接到情节提要中的ViewController2
    • 是的,我愿意。另外,我编辑了我的 OP 以显示我是如何声明它的,这可能是问题所在。
    • 标签仍然为空吗?
    • 是的,它仍然有标准的占位符文本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-09
    • 2014-08-17
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    相关资源
    最近更新 更多