在没有.xib文件的viewDidLoad之后打开ViewController

时间:2012-11-01 18:35:44

标签: objective-c xcode cocoa storyboard viewcontroller

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

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

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

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

有没有通用/标准的方法来做到这一点?

非常感谢!

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可以从Storyboard实例实例化UIViewController实例:

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

这假设您将从该StoryBoard实例中的初始视图控制器开始。

您可以将其与条件配对以执行以下操作:

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];

如果您想要实例化一个不是StoryBoard中的初始视图控制器的视图控制器,您可以利用另一个实例 - (id)instantiateViewControllerWithIdentifier:(NSString *)identifier而不是调用instantiateInitialViewController