在两个视图控制器之间转换时将 NSArray 存储到文件

Posted

技术标签:

【中文标题】在两个视图控制器之间转换时将 NSArray 存储到文件【英文标题】:Store NSArray to file when transiting between two view controllers 【发布时间】:2014-03-31 15:26:39 【问题描述】:

我正在开发一个iPhone App,我的代码中有两个视图控制器,分别是ViewControllerA(VCA)和ViewControllerB(VCB),VCA可以通过segue推送到VC​​B,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 时会调用哪个方法,反之亦然,这样我就可以在那里进行读写操作。谢谢。

【问题讨论】:

什么是 wustlPPVC?不应该是vcb吗? prepareForSegue 是执行此操作的正确位置。同意@Prakash,“vcb”是设置属性的视图控制器。 @Prakash 我改了,很抱歉造成混乱 【参考方案1】:

一般来说,当你推送一个视图控制器然后从那里返回到前一个视图控制器时,你并没有使用 segue,所以prepareForSegue 不会被调用。相反,您应该考虑使用willMoveToParentViewController:。当父视图控制器设置为nil 时,当前视图控制器将从堆栈中弹出。此时你可以调用父视图控制器上的方法来更新它的状态信息。

willMoveToParentViewController: 在创建和显示 VCB 时也会被调用(在 segue 期间添加到堆栈中)。

另一种方法是将 VCA 设置为 VCB 的 delegate,并在相关更改后让 VCB 更新 delegate

【讨论】:

使用委托!代表们太棒了!

以上是关于在两个视图控制器之间转换时将 NSArray 存储到文件的主要内容,如果未能解决你的问题,请参考以下文章

根视图控制器呈现的两个视图控制器之间的转换

将标签信息存储到历史表中

两个视图之间的swiftui转换

在过渡动画期间在两个视图控制器之间共享图像

释放 NSArray 时将对象设置为 nil

我正在使用 laravel,我想计算控制器中存储函数中两个日期之间的天数并自动显示在索引视图中