【发布时间】:2013-07-22 05:47:55
【问题描述】:
在我的 iOS 应用程序中,我尝试在当前的“上方”呈现新的 ViewController。遵循this Apple 指南,在某些情况下我使用以下代码:
MyViewController* vc = [[MyViewController alloc] initWithNibName: nil bundle: nil];
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController: vc];
[mainController presentViewController:nc animated:YES completion:nil];
此代码被调用(它发生在主控制器成功加载后,而不是在 viewDidLoad 中)并且新视图使用所选的过渡样式出现。
MyViewController类创建完成,viewDidLoad、supportedInterfaceOrientations等方法调用成功。
现在问题来了。
在界面生成器中,我创建控制器,将其类设置为 MyViewController。我在这个控制器中创建了许多视图,例如 UIButton。 MyViewController 具有属性
IBOutlet UIButton* button
在故事板上,放置的 UIButton 的引用出口设置为控制器的“按钮”属性。作为仔细检查,在情节提要上的视图控制器的“Outlets”部分中,“按钮”绑定到放置的 UIButton 对象。
但是当viewDidLoad被调用时,按钮属性的值为nil。自然,按钮不显示。两个UITableView 对象也是如此(它们的dataSource 和delegate 都设置为同一个视图控制器并且MyViewController 符合
<UITableViewDelegate, UITableViewDataSource>
如果它很重要)。
此外,出现的黑屏会忽略所有触摸(并且滑动手势识别器放置在情节提要上的控制器上)。但它会对方向变化做出反应。
我想问题是 MyViewController 的创建实例无法“看到”情节提要,我错过了一些非常基本的东西,但我在 Apple 文档中没有看到任何提示。
【问题讨论】:
-
只需执行
[[MyViewController alloc] init],它就会自动拾取正确的笔尖/束。 -
@MikeWeller 不,它没有。 init 实际上导致调用 initWithNibName:Bundle: 两个参数都为零。
-
我只是说它更简单、更干净(恕我直言)。
标签: ios objective-c user-interface