假设我正在使用segues转换视图控制器。我在View Controller 1上有一个textField,在第二个视图控制器上有一个标签。当我segueing到第二视图控制器我可以很容易地设置标签用下面的代码:何时适合使用presentedViewController?
视图控制器#2
-(void) viewWillAppear: (BOOL) animated
{
self.labelVC2.text = ((VC1 *)self.presentingViewController).textFieldVC1.text;
}
这是非常合情合理的。 presentViewController属性在这种情况下被使用。虽然试图找出当presentedViewController属性将被用它似乎是合乎逻辑,它会从第一个视图控制器在prepareForSegue方法中使用这样的:
视图控制器#1
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"SegueToNextVC"])
{
((VC2 *)self.presentedViewController).labelVC2.text = self.textFieldVC1.text;
}
}
尽管如此,这并不似乎工作,我假设这是因为在prepareForSegue中,第二个视图控制器的新实例在segue发生之前被调用,因此失去了我刚刚设置的属性。如果我在这是正确的,什么时候使用presentViewController属性是适当的时间?很明显,我不会在我的第二个视图控制器上使用这个属性,因为我可以直接访问这个类。