0

我想知道你是否可以帮助我。我正在开发一个应用程序,其中有五个 UIView 控制器,每个控制器都有要完成和填写的字段。在页面底部,我创建了一个带有五个按钮的底部栏,每个控制器一个。

我想要的是:如果用户填写了一半,比如说 VC_1,然后转到 VC_2,在这里填写一些字段,然后返回 VC_1 或新的 VC3,那么之前的进度仍然存在。

我在每次按下按钮时都使用“presentViewController”进行了尝试,但是如果我回到 1 会发生什么情况是所有字段都是空的,可能是因为它会将 viewController 放在当前字段的顶部。不删除数据的一种方法是如果我使用dismissViewController,但这总是让我回到VC_1,如果我想从VC_3返回到VC2,这将不起作用。

我希望我的问题是有道理的,并且你们中的一个人可以解释我如何实现上述目标。

干杯,伦纳特

4

4 回答 4

2

这里有两个可以帮助的想法

  1. 创建和使用比任何视图控制器都更持久的模型。
  2. 听起来你应该使用UITabBarController.

对于想法 1,每当您存储数据时,都要创建一个与任何视图控制器分开的类来保存数据。当您创建视图控制器的实例时,将该数据对象分配给视图控制器。然后当视图加载时,使用数据对象中的数据来填充字段。当用户使用任何控件进行更改时,更新数据对象。请参阅模型-视图-控制器

对于想法 2,使用标签栏控制器将保留所有视图控制器的活动实例。这样您就不需要创建它们的新实例。

于 2014-09-16T01:33:27.223 回答
1

看起来UITabBarController是你的朋友。它为您管理视图的显示和隐藏。

于 2014-09-16T01:31:20.227 回答
0

嗯 夫妇的事情要考虑。根据艾伦的评论,您可能需要考虑将您的项目嵌入到 UITabBarController 中:

以下是如何以编程方式执行此操作:

@property (nonatomic, strong) UITabBarController *tabBarController;
     MyView * view = [[MyView alloc]initWithNibName:@"MyView" bundle:nil];

            view.title = @"My Planner";


          nav1 = [[UINavigationController alloc] initWithRootViewController:view];

              nav1.tabBarItem.image = [UIImage imageNamed:@"nofill_star.png"];

     self.tabBarController.viewControllers=[NSArray arrayWithObjects:nav1,nil];


OR 

   MyView * view = [[MyView alloc]initWithNibName:@"MyView" bundle:nil];

            view.title = @"My Planner";

self.tabBarController.viewControllers=[NSArray arrayWithObjects:view,nil];

或者从您的故事板中,转到嵌入标签栏中的编辑器。另请查看NSUserDefualts。这也是要考虑的事情。

于 2014-09-16T01:40:02.787 回答
0

而不是UITabBarController我认为你最好的选择是 a UIScrollViewwith big contentSizeand pagingEnabled = YES。多合一视图控制器,您可以根据需要自定义底栏。

于 2014-09-16T01:35:40.333 回答