我是iOS的新手,我正试图找出可能基本的东西。我有两个UIViews,每页有四个按钮,每个按钮下面有四个标签。基本上,如果我按下视图控制器1上的按钮1,我希望视图控制器2上的所有标签都只是读取“1”。这是一个更好的视觉形象:
现在,我已将IB中按钮1的模态转换连接到View Controller 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显示该方法触发,但标签为null。有谁知道我需要在这里改变什么?
我在ViewController2中声明了我的标签,如下所示:
@interface ViewController2 : UIViewController {
UILabel *label1;
}
@property (strong, nonatomic) IBOutlet UILabel *label1;
@end
以下是label1的连接检查器:
答案 0 :(得分:1)
您正在创建一个全新的视图控制器实例。故事板为您创建视图控制器,并将其传递给您,以便在prepareForSegue:sender:
方法中进行配置。您可以像这样访问它:
ViewController2 *controller2 = (ViewController2 *)segue.destinationViewController;
// configure controller2 here
此外,调用prepareForSegue:
时,不会设置视图控制器上的出口。您需要在第二个视图控制器上具有NSString
作为属性。稍后,您可以使用viewDidLoad
将标签的文本设置为您之前定义的NSString
属性所持有的值。