我正在使用Storyboard,据我所知我没有xib文件。我想要做的是:当应用程序启动时,我想检查过去是否有任何内容写入数据库,如果没有,则打开一个视图,这不是标准视图。 (因为如果db不为空,则应打开另一个视图,因为它是标准视图。)
到目前为止我尝试过的方法:(在viewDidLoad / viewDidAppear中)
ViewController *vs = [Viewcontroller new];
[self presentViewController:vs animated:YES completion:nil];
这会导致黑屏。没有发生,只是保持黑色。 接下来我尝试执行一个segue,但这导致一个视图一次又一次打开。
有没有通用/标准的方法来做到这一点?
非常感谢!
答案 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