iOS - 使用presentViewController呈现ViewController:不起作用

时间:2013-07-23 08:45:38

标签: ios objective-c user-interface

在我的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文档中看不到任何提示。

1 个答案:

答案 0 :(得分:3)

您正在以错误的方式初始化MyViewController。因为您使用的是“故事板”,所以您应该查看标识符名称(在故事板中),然后从故事板初始化控制器。

    MyViewController* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewControllerIdentifier"];