从xib文件模态地呈现视图控制器

时间:2016-03-01 20:46:42

标签: ios objective-c uiviewcontroller presentmodalviewcontroller

我有一个与UIViewController自定义类(ZocaloPlayerViewController)关联的xib文件

enter image description here

我试图以翻转水平

模式呈现UIViewController(在故事板中制作)

enter image description here

但是我收到了错误:

这就是我试图呈现视图控制器的方式

ShowDetailsArtistAlbumViewController *vc = [[ShowDetailsArtistAlbumViewController alloc] initWithNibName:@"ShowDetailsArtistAlbumViewController" bundle:nil];
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:vc animated:YES completion:^{

}];

但是我收到了这个错误...

Uncaught exception: Could not load NIB in bundle: 'NSBundle </var/mobile/Containers/Bundle/Application/57C2AD20-51DB-4C43-BB8F-2E8F22CD2E2A/MyMusicApp.app> (loaded)' with name 'ShowDetailsArtistAlbumViewController'

我正在尝试

[self.parentViewController presentViewController:vc animated:YES completion:^{

}];

但没有任何反应......

编辑: 我试过这种方式

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ShowDetailsArtistAlbumViewController *vc = [sb instantiateViewControllerWithIdentifier:@"ShowDetailsArtistAlbumViewController"];
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:vc animated:YES completion:^{

}];

视图控制器已呈现,但我得到的是黑色视图,但内部没有任何内容

1 个答案:

答案 0 :(得分:1)

你说“我有一个xib文件关联”,但问题是你没有。运行时正在查找名为 ShowDetailsArtistAlbumViewController.xib 的xib文件,但您没有。您需要重命名 xib 文件以符合运行时的期望。

或者,您可能错误地创建了视图控制器。你这么说:

ShowDetailsArtistAlbumViewController *vc = 
    [[ShowDetailsArtistAlbumViewController alloc] 
        initWithNibName:@"ShowDetailsArtistAlbumViewController" bundle:nil];

这就是为什么运行时认为你有一个名为 ShowDetailsArtistAlbumViewController.xib 的笔尖 - 你告诉它,就在那条线上!

如果实际上有一个名为 ShowDetailsArtistAlbumViewController.xib 的笔尖,那就没问题了。你的问题是没有。你已经对运行时撒了谎,所以很自然地崩溃了。

如果您确实想在故事板中使用视图控制器,那么如何访问该实例。您正在做的是创建一个不同的实例。如果您想要故事板中的实例,则需要与故事板交谈并将其告诉instantiateViewControllerWithIdentifier: