2012-11-01 50 views
0

我正在使用Storyboards,据我所知我没有xib文件。我想要做的是:当应用程序启动时,我想检查过去是否有任何内容写入数据库,如果没有,打开一个视图,这不是标准视图。 (因为如果db是不是空的,一个另一种观点应是标准视图中打开。)在viewDidLoad没有.xib文件后立即打开ViewController

我试过到目前为止:(在viewDidLoad中/ viewDidAppear)

ViewController *vs = [Viewcontroller new]; 
[self presentViewController:vs animated:YES completion:nil]; 

这导致一个黑色的屏幕。没有事情发生,它只是保持黑色。 接下来我试图执行一个segue,但是这会导致视图一次又一次地打开。

有没有一个共同的/标准的方法来做到这一点?

非常感谢!

回答

0

在这种情况下,你可以从一个故事板实例实例化一个UIViewController实例:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"YourStoryboard" bundle:nil]; 
UIViewController *newController = [storyboard instantiateInitialViewController]; 

这是假定你会从故事板实例中的初始视图控制器启动。

你可以将这些信息与您的条件来执行以下操作:

UIViewController *newViewController = nil; 
if([self databaseHasNewInformation]) 
{ 

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"NewDataStoryboard" bundle:nil]; 
    newController = [storyboard instantiateInitialViewController]; 
} 
else 
{ 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"NoNewDataStoryboard" bundle:nil]; 
    newController = [storyboard instantiateInitialViewController]; 
} 

// Present New View Controller (this example assumes a navigation controller) 
[self.navigationController pushViewController:newController animated:YES]; 

如果你想创建一个视图控制器,是不是在故事板的初始视图控制器,你可以看看利用另一个实例 - (id)instantiateViewControllerWithIdentifier:(NSString *)identifier而不是打电话instantiateInitialViewController

+0

坦克你非常感谢你的帮助! – Linus