在视图控制器之间移动Objective-C

时间:2014-09-16 01:11:49

标签: objective-c uiviewcontroller segue data-management presentviewcontroller

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

我想要的是以下内容:如果用户填写了一半让我们说VC_1,然后转到VC_2,在这里填写几个字段,然后返回VC_1或新的VC3,之前的进展是还在那里。

我在按下每个按钮时使用“presentViewController”尝试了这个,但是如果我回到1会发生的是所有字段都是空的,可能是因为它将viewController抛出当前的一个。不删除数据的一种方法是使用dismissViewController,但是这总是让我回到VC_1,如果我想从VC_3返回到VC2则无法工作。

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

干杯, Lennaert

4 个答案:

答案 0 :(得分:2)

这是两个可以提供帮助的想法

  1. 创建并使用持续时间比任何视图控制器都长的模型。
  2. 听起来你应该使用UITabBarController
  3. 对于构思1,无论何时存储数据,都要创建一个与任何视图控制器分开的类来保存数据。在视图控制器中创建实例时,将该数据对象分配给视图控制器。然后在加载视图时,使用数据对象中的数据填充字段。当用户使用任何控件进行更改时,请更新数据对象。请参阅Model-View-Controller

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

而不是UITabBarController我认为您的最佳选择是UIScrollViewcontentSizepagingEnabled = YES。所有在一个viewController中,您可以根据需要自定义底栏。

答案 3 :(得分:0)

嗯,要考虑一些事情。根据Per Allen的评论,您可能需要考虑将项目嵌入到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。这也是需要考虑的事情。