多视图的应用程序架构挑战

时间:2012-08-06 00:00:49

标签: iphone objective-c ios xcode uiviewcontroller

我是iOS开发的新手,想建立以下应用程序:

  • 第一个屏幕是带有4个标签的标签栏视图
  • 3个标签非常简单,但是第4个标签会将您从标签栏视图中带出序列中的多个视图。它基本上是一个整个10个屏幕的练习(我不在乎是否有导航栏),最后你得到一个分数并返回主标签栏视图。

鉴于我有以下要求,您如何建议我这样做:

  • 在练习的任何给定页面上,用户可以取消并返回主标签栏视图(如何从练习中间返回到该特定页面?或者在练习结束时?)
  • 每个页面都有一些按钮和东西,所以它不是一系列图像 - 用户采取行动,必须在最终屏幕上记录和使用(对于分数) - 我应该使用带分页的滚动视图吗?我读到了它,并不确定它是否符合我的需要。
  • 我应该以模态方式显示10个视图控制器,并且每个都有一个单独的UIViewController?

我知道这不仅仅是一个问题,但我想提供上下文,我相信整体策略的一个答案可以完全回答所有这些问题。

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

只需将导航控制器放在第四个标签内,然后使用它来浏览问题视图。

每当您想要回到本练习的开头时,请使用[self.navigationController popToRootViewControllerAnimated:YES];方法中的Cancel

如果您不想显示导航栏,可以设置

self.navigationController.navigationBar.hidden = YES;

答案 1 :(得分:0)

UITabBarController *tabBarController=[[UITabBarController alloc]init];
 tabBarController.delegate=self;
    Screen1 *screen1=[[Screen1 alloc]init];
    UINavigationController *nav2=[[UINavigationController alloc]screen1];
 Screen2 *screen2=[[Screen2 alloc]init];
 UINavigationController * nav3=[[UINavigationController alloc]initWithRootViewController:screen2];
UIWindow *samplewindow = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
NSArray *controllers=[NSArray arrayWithObjects:nav2,nav3, nil];
        tabBarController.viewControllers=controllers;
     [self.window addSubview:tabBarController.view];
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:[NSBundle mainBundle]];
 samplewindow.rootViewController = self.viewController;
    [samplewindow addSubview:self.viewController.view];
     [samplewindow makeKeyAndVisible];

在AppDelegate.m中添加此代码,然后它将正常工作。