0

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

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

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

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

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

非常感谢你!

4

1 回答 1

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

于 2012-11-01T18:57:35.743 回答