我是Objective-C Xcode的新手,我试图创建一个基本应用程序,它接收用户输入的信息以在第二个视图控制器上显示它。我有一个push(deprecated)
到ViewControllerTwo的按钮标识符为“calButtonPressed
”但我希望它在ViewControllerTwo上的标签上显示 float BAC。标签只是说什么,但它确实转到下一个ViewController。它在代码中也没有错误。我该怎么做才能解决这个问题?谢谢:))
ViewController.m上的代码
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"calButtonPressed"])
{
ViewControllerTwo *vc2 = (ViewControllerTwo *)segue.destinationViewController;
vc2.lblBAC.text = [[NSString alloc] initWithFormat:@"%f", BAC];
}
}
ViewController.h上的代码
@property (strong, nonatomic) IBOutlet UILabel *lblBAC;
答案 0 :(得分:2)
在ViewCongtrollerTwo中,添加一个属性来保存文本,直到加载视图为止。
@interface ViewControllerTwo ()
@property (strong, nonatomic) NSString *textFromlblBAC;
@end
在prepareForSegue中使用它:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"calButtonPressed"])
{
ViewControllerTwo *vc2 = (ViewControllerTwo *)segue.destinationViewController;
vc2.textFromlblBAC = [[NSString alloc] initWithFormat:@"%f", BAC];
}
然后在ViewCongtrollerTwo中,只有在创建文本字段并加载视图后,才将此值复制到标签文本字段中。
- (void)viewDidLoad
{
[super viewDidLoad];
viewControllerTwoLabel.text = self.textFromlblBAC;
}
答案 1 :(得分:1)
您无法设置lblBAC,因为vc2的视图尚未加载。相反,在vc2上声明一个字符串属性,在prepareForSegue中设置它,然后在vc2的viewDidLoad中将lblBAC.text设置为该属性。