在我的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
时,button属性的值为nil。当然,按钮不显示。两个UITableView
对象也是如此(dataSource和delegate都设置为相同的视图控制器,MyViewController符合
<UITableViewDelegate, UITableViewDataSource>
如果重要的话。)
此外,出现的黑屏会忽略所有触摸(并且滑动手势识别器放置在故事板上的控制器上)。但它会对方向变化作出反应 我想问题是创建的MyViewController实例无法“看到”故事板,我想念一些非常基本的东西,但我在Apple文档中看不到任何提示。
答案 0 :(得分:3)
您正在以错误的方式初始化MyViewController。因为您使用的是“故事板”,所以您应该查看标识符名称(在故事板中),然后从故事板初始化控制器。
MyViewController* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewControllerIdentifier"];