2012-10-01 30 views
0

我新的目标C所以请原谅我,如果这是一个愚蠢的问题(我已搜查!)无法UIViewControllers之间切换使用故事板

我使用Xcode中的故事板(4.4.1)和我有2个UIViewControllers 我想他们之间的编程开关(不知道这是正确的术语?)

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
    UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"BookingView"]; 
    [self presentModalViewController:vc animated:YES]; 

上面的代码完美的作品后来在我的项目,但我当我尝试打电话,如果在if ()在我的viewdidload方法在第一个UIViewController它不起作用。请帮助!

回答

1

你不应该执行在viewDidLoad中这样的任务:方法。 您试图以模态方式呈现视图控制器,它只在内存中分配并加载,但尚未显示。这意味着您的演示文稿将无法使用。您应该将代码移到viewDidAppear:

我建议你阅读本指南,了解视图控制器代表团的基本知识:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html%23//apple_ref/doc/uid/TP40007457

+0

谢谢亚历克斯,我认为它可能是这样的,因为它在IBAction中工作,但不在viewDidLoad中。我应该从viewDidLoad还是从viewDidAppear方法调用另一个(自定义)方法?谢谢! –

+0

别管我最后的评论,在viewDidAppear中工作。谢谢! –

+0

嗯,我想你正在做的是检查一个条件,并根据结果,你呈现或不是一个视图控制器在另一个顶部的模态。真的没有什么区别,并且为了清晰起见,调用另一种不同的方法会更加出色。 – ale0xB

0

为什么不是self.storyboard而不是[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

假设所有的视图控制器是来自同一个故事板:)

+0

属实,这有一定道理,但它仍然无法正常工作... –