在我的iPad应用程序中,我试图用模态表单样式呈现我的一个观点。 这是一些代码:
-(void)present
{
SecondViewController *modal = [[SecondViewController alloc]init];
modal.modalPresentationStyle = UIModalPresentationStyleFormSheet;
[self presentModalViewController:modal animated:YES];
}
我正在使用Storyboard,我在我想要显示的视图中添加了textView和工具栏等内容。我在Identity Inspector中设置了正确的类,在类文件中,我检查了它是正确的视图,显示为NSLog(@"Right view");
当调用空白时,会出现一个视图,但只是一个暗白色的方块。我从Storyboard中获取的内容中没有任何内容,我甚至尝试更改视图的背景颜色和textView以查看某些内容是否在广场之外,但整个事物都保持白色。感觉它没有使用我在storyboard中创建的视图,但是我已经将它设置为正确的类,并且在调用它时会打印出NSLog。我没有在Storyboard中以任何方式连接这两个视图,SecondViewController只是浮动,所以这可能是问题?调用-(void)present
的按钮是以编程方式创建的,因此我无法将其拖动到按钮上。
为什么它显示我的班级的空版本?
答案 0 :(得分:3)
在“Identity Inspector”中为ViewController设置“Storyboard ID”,然后将其显示如下:
-(void)present
{
SecondViewController *modal = [self.storyboard instantiateViewControllerWithIdentifier:@"myStoryboardID"];
modal.modalPresentationStyle = UIModalPresentationStyleFormSheet;
[self presentModalViewController:modal animated:YES];
}
如果您使用的是iOS6,则不推荐使用presentModalViewController:animated:
,请使用以下命令:
-(void)present
{
SecondViewController *modal = [self.storyboard instantiateViewControllerWithIdentifier:@"myStoryboardID"];
modal.modalPresentationStyle = UIModalPresentationStyleFormSheet;
[self presentViewController:modal animated:YES completion:nil];
}
答案 1 :(得分:1)
你的问题是,你假设程序本质上知道在哪里可以找到已经布局的,这个控制器的视图,而这根本不是故事板的工作方式。您列出的代码将创建一个视图控制器,但如果没有关联的视图,它将只显示为黑色方块。
有几种方法可以解决你的困境:
.xib
,并调用initWithNibName:bundle:
方法将其加载为视图控制器的视图。如果您只是想以编程方式加载视图,这是最佳解决方案。instantiateViewControllerWithIdentifier:
方法以编程方式加载故事板中的视图,这可能是一个坏主意,因为它违背了故事板的设计。如果你愿意,我可以详细说明。