iPhone App Dev - 从View Controller加载视图

时间:2011-07-14 21:47:40

标签: iphone objective-c xcode

我有一个问卷调查视图控制器类。这实例化了几个questionviewcontrollers(每个questionviewcontroller都有一个关联的视图)。

我如何获得调查问卷以加载与他们的questionviewcontrollers相关的问题视图....

编辑:

-(void) setQuestions{
    for (NSDictionary *q in self.questions) {       
        /* Create our Question object and populate it */
        QuestionViewController *question = [[QuestionViewController alloc]init];        
        [question setQuestionId:[q objectForKey:@"questionId"] withTitle:[q objectForKey:@"question"] number:[q objectForKey:@"questionNumber"] section:[q objectForKey:@"sectionId"]];
        /* Add it to our question (mutable) array */
        [questionArray addObject:question];
        [question release];
    }
}

上面的方法在QuestionnaireViewController的viewDidLoad方法中调用,并且是创建QuestionViewControllers的地方。每个人都有一个关联的视图与下一个按钮。

1 个答案:

答案 0 :(得分:0)

当您说“我如何通过调查问卷加载这些问题观点”时,您的问题并不清楚。

您是否只是在选择问题时询问如何显示QuestionViewController?如果是这样,这听起来像基于导航的应用程序。您通常会在应用程序委托中使用UINavigationController作为顶级视图控制器,将QuestionaireViewController设置为UINavigationController的rootViewController。然后,当用户在QuestionaireViewController中选择一个问题时,您可以使用以下方式显示其控制器:

[self.navigationController pushViewController:questionViewController animated:YES];

如果您要问如何将这些QuestionViewControllers的视图显示为QuestionaireViewController的子视图,那么简短的答案是不要这样做(至少不在iOS 4.x下)。 Apple的视图控制器框架不支持使用嵌套视图控制器同时管理多个子视图。该文档指出每个视图控制器应对应于iPhone上的一个全屏视图。 iPad会对分割视图和弹出窗口等内容略微更改这些规则,但它仍然不能让你在自己的自定义视图控制器中嵌套视图控制器。

(事实上,在技术上可以使用多个视图控制器在单个屏幕上管理不同的子视图,但正确地这样做需要专业知识如何设计视图控制器框架,以便您可以正确地委派所有各种UIViewController方法以及像viewWillAppear:,navigationController,tabBarController等属性。你通常最好遵循Apple的建议并在每个屏幕上使用一个视图控制器。)