2012-11-01 46 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