【发布时间】:2012-10-20 19:49:15
【问题描述】:
我在尝试加载我的 CafesViewController 时遇到了崩溃。我在文件检查器中将我知道的所有标识符都设置为 CafesViewController,并检查了“使用情节提要 ID”。
我的主菜单视图加载完美,因为它被定义为我的 plist 中的默认故事板,但是,当按下按钮加载我的咖啡馆列表时,加载咖啡馆选项时断开连接(我的应用程序是要做的事情)。
我当前的代码是:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([mlabel.text isEqualToString: @" Cafés " ])
{
UIStoryboard *cafesViewController = segue.destinationViewController;
cafesViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"CafesViewController"];
}
}
如果有人可以提供意见,我将不胜感激,因为我不知道断开连接在哪里。错误当然是“'NSInvalidArgumentException',原因:'Storyboard () 不包含标识符为'CafesViewController'的视图控制器”
我认为我的号召性用语是错误的,但有人可以给我意见吗?
谢谢!
【问题讨论】:
-
这里有几个问题。一个是
destinationViewController是一个视图控制器,因此不能是UIStoryboard。 (我原以为编译器会标记它!)不过,更大的是,当调用prepareForSegue:时,您已经处于激活新视图控制器的过程中,因此似乎只是实例化另一个控制器就像一个错误的想法。 -
谢谢菲利普!我已将版本修改为这样,但不确定这是否有效:
-
if ([mlabel.text isEqualToString:@"Cafés" ]) { UIStoryboard *cafes = [UIStoryboard storyboardWithName:@"Cafes" bundle:nil]; UIViewController *CafesViewController = [cafes instantiateInitialViewController]; [self presentViewController:CafesViewController 动画:YES 完成:nil]; }
-
这很难,因为你是对的,我的主情节提要已经激活,在这里我试图用 IF 语句开始另一个,但我不确定还能做什么,因为我有多个使用带有这些 IF 语句的单个按钮激活情节提要。我想知道这是否可能......
-
你认为我所有的观点都应该附在一个故事板上吗?
标签: xcode4 uiviewcontroller uistoryboard segue uistoryboardsegue