我想知道你是否可以帮助我。我正在开发一个应用程序,其中我有五个UIView控制器,每个都有要完成和填写的字段。在页面的底部我创建了一个带有五个按钮的底栏,每个控制器一个。
我想要的是以下内容:如果用户填写了一半让我们说VC_1,然后转到VC_2,在这里填写几个字段,然后返回VC_1或新的VC3,之前的进展是还在那里。
我在按下每个按钮时使用“presentViewController”尝试了这个,但是如果我回到1会发生的是所有字段都是空的,可能是因为它将viewController抛出当前的一个。不删除数据的一种方法是使用dismissViewController,但是这总是让我回到VC_1,如果我想从VC_3返回到VC2则无法工作。
我希望我的问题有道理,你们中的一个人可以解释我如何实现上述目标。
干杯, Lennaert
答案 0 :(得分:2)
这是两个可以提供帮助的想法
UITabBarController
。对于构思1,无论何时存储数据,都要创建一个与任何视图控制器分开的类来保存数据。在视图控制器中创建实例时,将该数据对象分配给视图控制器。然后在加载视图时,使用数据对象中的数据填充字段。当用户使用任何控件进行更改时,请更新数据对象。请参阅Model-View-Controller。
对于创意2,使用标签栏控制器将保留所有视图控制器的活动实例。这样你就不需要创建它们的新实例了。
答案 1 :(得分:1)
看起来UITabBarController是您的朋友。它管理为您显示和隐藏视图。
答案 2 :(得分:0)
而不是UITabBarController
我认为您的最佳选择是UIScrollView
,contentSize
和pagingEnabled = 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。这也是需要考虑的事情。