-1

假设我有一个应用程序,它基本上存在一个带有视图的 tabbarcontroller。其中一个视图有一个按钮,它显示了一个模态视图控制器。此视图控制器的目的是输入一些数据,例如名称,当按下开始时,它会开始录制,因此它还保留对时间的引用并显示录制时间的总量。

(点击开始按钮后,按钮变为停止按钮)

在录制过程中,用户可以单击关闭按钮,该按钮将关闭视图控制器(保存名称和录制时间等变量),应用程序将返回其带有视图的标签栏控制器。当用户在录制时再次按下按钮(显示模态视图控制器)时,它必须显示具有先前输入的数据的视图控制器(名称,录制时间总量)。

因此,在以下代码运行后,这些数据必须保持活动状态:

- (IBAction)close:(id)sender {
     [[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];
}

上面的代码将关闭视图控制器,但也会破坏该视图控制器中的变量。在关闭视图控制器后保持输入的变量的最佳方法是什么?

tabbarcontroller 的视图是否应该对这些数据负责?或者我应该保留对我的模态视图控制器的引用并使其在后台保持活动状态?我将如何在代码中做到这一点?

最后,当用户通过单击模态视图控制器中的停止按钮并按下关闭按钮来停止录制时,这个视图当然应该被销毁以保留内存。

4

4 回答 4

1

如果你想存储整个实例,ViewController你应该创建一个带有解除分配中止方法的 Singleton 类:

-(void)dealloc {
   abort();
}

但我认为您只想从中存储一些信息。您可以使用viewWillDissapear调用的方法 ant传递它topViewController(在UINavigationController基于应用程序中)并将一些变量分配给目标。

您也可以使用单例数据模型并在关闭控制器时为其分配值。

我建议你做的是将数据模型从 ViewController 强烈分离到单独的类。

于 2013-11-12T16:18:26.853 回答
1

实现这一目标的步骤:

  • 在 ViewController 的 .h 文件中声明模态 ViewController 的对象。
  • 在 viewDidload 中初始化它。
  • 随时随地展示它。
  • 每当您关闭模态视图控制器时,它的变量都会保持保存。
  • 直到您重新初始化对象或弹出视图控制器。
  • 于 2013-11-12T16:39:05.813 回答
    1

    2 个词 - 代表模式

    把东西分开很好。如果控制器应该创建一些数据,则使用一种方法定义协议,例如

    -(void)controller:(MYController *)controller didEnterData:(MYDataWrapper *)data;
    

    当用户点击close时,将消息发送给代理。创建控制器时,请设置委托。简单的。

    于 2013-11-12T16:46:08.833 回答
    -1

    您可以在视图被关闭之前使用 NSUserDefaults 存储所需的数据,并在视图加载时使用 NSUserDefaults 获取数据。

    于 2013-11-12T16:24:57.013 回答