2

在我的 iOS 应用程序中,我尝试在当前视图“上方”呈现新的 ViewController。遵循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 文档中没有看到任何提示。

4

1 回答 1

3

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

    MyViewController* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewControllerIdentifier"];
于 2013-07-23T08:54:10.427 回答