我在场景和导航控制器之间有争执。导航控制器嵌入一个视图,该视图具有要在prepareForSegue
方法中初始化的文本字段。
所以是:
场景A->导航控制器->场景B
但是,在Scene A.prepareForSegue
中,仅分配了Nav控制器的属性,而所有Scene B的属性仍然为零。所以,如果我这样做:
UINavigationController *cont=[segue destinationViewController];
AddToDoItemViewController *atodo=(AddToDoItemViewController*)cont.topViewController;
[atodo preparetextfield2];
它不起作用,因为待办事项中的文本字段仍设置为nil。那么我该如何解决呢?
这是preparetextfield2方法:
-(void)preparetextfield2
{
self.textField.text=@"test";
}
最佳答案
在您的AddToDoItemViewController.h文件中,创建属性以保留该值,例如:
@property(nonatomic, strong) NSString *myString;
并在viewDidLoad中更新您的文本字段:
-(void)viewDidLoad{
//...Your code
self.textField.text = self.myString;
}
并在preparetextfield2中只需更新字符串:
-(void)preparetextfield2 {
self.myString = @"test";
}
发生这种情况是因为在您调用prepareForSegue时该阶段尚未加载控件,因此您的文本字段为nil。