故事板,self presentViewController,iOS 6,空白屏幕

Posted

技术标签:

【中文标题】故事板,self presentViewController,iOS 6,空白屏幕【英文标题】:storyboard, self presentViewController, iOS 6, blank screen 【发布时间】:2013-07-07 20:20:17 【问题描述】:

我正在使用情节提要,我有一个视图控制器,单击时我需要以模态方式显示另一个视图控制器。我正在尝试使用此代码

[self presentViewController:zoomV animated:YES completion:NULL];

我想出了一个空白屏幕。 这就是我的创作方式

zViewController *zoomV = [[zViewController alloc] init];
[self presentViewController:zoomV animated:YES completion:NULL];

我尝试对此进行研究,一些答案围绕使用情节提要而没有关联的 rootviewcontroller。所以我在初始场景中拥有一个navigationController,然后从那里我将一个关系拖到另一个Viewcontroller,该关系将它定义为rootViewcontroller。这足够了吗?还是这无关紧要?

【问题讨论】:

根视图控制器与呈现模态控制器无关。您上面的代码是否在根视图控制器中?你是如何创建 zoomV 的——我怀疑你的问题在那里。 我确实实例化了 zoomV,并点击了它的 viewdidload,我确实在运行时点击了该方法。 你在哪里创建 zViewController 的视图层次结构?在情节提要中,在其单独的 xib 中还是通过代码? 不,我在情节提要中添加了一个 ViewController,通过 Interface Builder 设置它的 UI(它有一个 scollview 和一个 imageview),然后我用 .h 和 .m 文件创建了一个同名的类。并将其与情节提要中的 Viewcontroller 相关联。我应该提到,在我的故事板中,没有箭头击中那个 zViewController,它只是独立存在。 【参考方案1】:

既然您的故事板中有您的 zViewController,您应该使用 UIStoryboardinstantiateViewControllerWithIdentifier: 实例化您的 zViewController。 在您的第一个视图控制器中,不要使用 alloc/init 创建 zViewController,当然要在情节提要中为您的 zViewController 设置标识符。

zViewController *zoomV = [self.storyboard instantiateViewControllerWithIdentifier:@"yourIdentifier"];
[self presentViewController:zoomV 
                   animated:YES 
                 completion:NULL];

您也可以使用 segue 并直接执行它来完成相同的操作,而无需实例化 zViewController,但这取决于您。

作为第二条(小)注释,不要在 ObjC 中命名以小写开头的类:)。

【讨论】:

【参考方案2】:

您可以参考下面的 sn-p 故事板:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
AddNameViewController *sfvc = [storyboard instantiateViewControllerWithIdentifier:@"AddNameViewController.m"];
[sfvc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentViewController:sfvc animated:YES completion:nil];

【讨论】:

以上是关于故事板,self presentViewController,iOS 6,空白屏幕的主要内容,如果未能解决你的问题,请参考以下文章

iOS 添加视图:来自故事板的广告视图,无限制

awakeFromNib 中的代码被故事板覆盖

返回故事板当前视图控制器标识符

在故事板中隐藏导航栏

Xcode 6 使用多个故事板

故事板 ViewController.m