假设我正在使用 segues 转换视图控制器。我在视图控制器 1 上有一个 textField,在第二个视图控制器上有一个标签。当我转到第二个视图控制器时,我可以使用以下代码轻松设置标签:
视图控制器 #2
-(void) viewWillAppear: (BOOL) animated
{
self.labelVC2.text = ((VC1 *)self.presentingViewController).textFieldVC1.text;
}
这很有意义。在这种情况下使用 presentingViewController 属性。虽然试图弄清楚什么时候使用 presentViewController 属性,但似乎合乎逻辑的是,它将在 prepareForSegue 方法中的第一个视图控制器中使用,如下所示:
视图控制器 #1
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"SegueToNextVC"])
{
((VC2 *)self.presentedViewController).labelVC2.text = self.textFieldVC1.text;
}
}
但是,这似乎不起作用,我假设这是因为在 prepareForSegue 中,我的第二个视图控制器的一个新实例在 segue 发生之前的那一刻被调用,从而丢失了我刚刚设置的属性。如果我在这方面是正确的,那么什么时候是使用presentedViewController 属性的合适时间?显然我不会在我的第二个视图控制器上使用这个属性,因为我可以直接访问这个类。