【问题标题】:Moving between view controllers Objective-C在视图控制器之间移动 Objective-C
【发布时间】:2014-09-16 01:11:49
【问题描述】:

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

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

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

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

干杯, 伦纳特

【问题讨论】:

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 事实上你应该这两件事都做!
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      嗯 有几件事要考虑。根据艾伦的评论,您可能需要考虑将您的项目嵌入到 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。这也是要考虑的事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-27
        • 1970-01-01
        • 2014-09-30
        相关资源
        最近更新 更多