我在场景和导航控制器之间有争执。导航控制器嵌入一个视图,该视图具有要在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。

07-24 18:02