【发布时间】:2013-07-29 18:12:56
【问题描述】:
我在使用 Storyboard 的 iOS 项目中遇到导航控制器问题。
项目的主要部分是一个UITabBar。当应用程序第一次加载屏幕 RegisterViewController 时:
当用户点击“注册”按钮时,会发出 HTTP POST 请求,然后在收到响应(JSON 对象)后,屏幕 QuestionnaireViewController 会使用:
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
QuestionnaireViewController *questionnaireViewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"QuestionnaireView"];
[questionnaireViewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[questionnaireViewController setQuestionsAndAnswers:_questionsAndAnswers];
[self presentViewController:questionnaireViewController animated:NO completion:nil];
当用户点击 QuestionnaireViewController 中的单元格时,会向 prepareForSegue:sender: 发送一条消息:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
UINavigationController *navigationController = segue.destinationViewController;
AnswersViewController *answersViewController = [[navigationController viewControllers] objectAtIndex:0];
NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
NSArray *answers = [[_questionsAndAnswers objectAtIndex:indexPath.row] objectForKey:@"answers"];
[answersViewController setAnswers:answers];
}
此时应用程序崩溃并出现以下错误: -[AnswersViewController viewControllers]:无法识别的选择器发送到实例。
下面是我的故事板更全面的概述,它可能有助于理解我哪里出错了:
我不知道如何解决这个问题,希望有人能够提供帮助。
谢谢, 尼克
【问题讨论】:
-
你不应该展示问卷视图控制器,你应该展示它嵌入的导航控制器。然后在 prepareForSegue 中,你不需要对导航控制器做任何事情,AnswersViewController 是目标视图控制器。
-
rdelmar:我现在觉得有点傻——我要如何呈现问卷视图控制器嵌入的导航控制器?
-
就像任何其他控制器一样,给它一个标识符并使用instantiateViewControllerWithIdentifier:,然后是presentViewControllerAnimated:completion。
-
rdelmar:我试过了,但是现在 QuestionnaireViewController 中的表格视图是空的。
标签: ios uiviewcontroller uinavigationcontroller storyboard uitableview