我正在开发一个iPhone应用程序,我的代码中有两个视图控制器,让它们是ViewControllerA(VCA)和ViewControllerB(VCB),VCA可以用segue推送到VCB,VCB可以返回到VCA。以下是我的VCA中的代码:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"placePiece"]) {
VCB *vcb = (VCB*) segue.destinationViewController;
vcb.shipsOnBoard = indexRecorder;
}
}
到达VCB后,我会在那里做点什么。我想做的是在VCB中保存数据,我想在用户单击VCB左上角的后退按钮时开始保存,我试图在VCB的prepareForSegue方法中执行此操作,但似乎没有调用该方法。此外,我还想在用户再次访问VCB时开始读取数据,我想知道每次用户从VCA转到VCB时会调用哪种方法,反之亦然,这样我就可以在那里进行读写操作。感谢。
答案 0 :(得分:1)
一般来说,当您按下视图控制器然后从那里返回到前一个视图控制器时,您没有使用segue,因此不会调用prepareForSegue
。相反,您应该考虑使用willMoveToParentViewController:
。当父视图控制器设置为nil
时,将从堆栈中弹出当前视图控制器。此时,您可以调用父视图控制器上的方法,以使用状态信息更新它。
willMoveToParentViewController:
(在segue期间添加到堆栈中)。
另一种方法是将VCA设置为VCB的delegate
,并在相关更改后让VCB更新delegate
。