UIView呈现黑屏,修复?

Nei*_*eil 1 iphone xcode cocoa cocoa-touch ios

我将View调用以下代码:

#import "infoView.h"
...
infoView *viewInfo = [[infoView alloc] initWithNibName:nil bundle:nil];
viewInfo.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:viewInfo animated:YES];
Run Code Online (Sandbox Code Playgroud)

但是当它在运行时呈现时,加载的视图变黑.目前我正在使用故事板,但我需要使用这个代码,因为在我的情况下它更有效率,因为我正在处理多个视图!

如果我通过StoryBoard连接它,它工作正常.

我应该看到2个标签,1个UITextView和2个UIButton.

视图是使用StoryBoard创建的,当创建视图的.m和.h文件时,我没有为它添加.xib.它也通过StoryBoard中的"自定义类"部分链接.

谢谢,希望有人能帮忙!

Pau*_*l.s 5

嘲笑那些花时间和精力来帮助你的人通常都是非常糟糕的形式.

命名非常重要,它使您的代码更易于使用,并允许其他人使用它.不遵循您所使用的语言的约定是危险的,并且意味着您的代码与其他开发人员不兼容,因为对事物的解释不同.

如果您查看UIViewController的docuemntation,您将在initWithNibName:bundle:方法描述中看到此注释

如果您的应用使用故事板来定义视图控制器及其关联视图,则您的应用永远不会直接初始化该类的对象.相反,视图控制器要么由故事板实例化 - 当触发segue时由iOS自动实现,或者当应用调用storyboard对象的instantiateViewControllerWithIdentifier:方法时以编程方式实例化.从故事板实例化视图控制器时,iOS会通过调用其initWithCoder:方法来初始化新视图控制器.iOS会自动将nibName属性设置为存储在storyboard中的nib文件.

因此,您实例化控制器错误,故事板应该实例化它.这是这样做的(命名已更正)

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle bundleForClass:[self class]]];
InfoViewController *infoViewController = [storyboard instantiateViewControllerWithIdentifier:@"InfoViewController"];
infoViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self infoViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)

边注

infoView对于班级来说这是一个坏名声,不仅因为你没有从资本开始,而且因为它完全是欺骗.任何阅读此内容的人都会认为这InfoViewUIView不是的子类UIViewController.