繁体   English   中英

我的viewController没有正确显示

[英]My viewController doesn't show up right

在我的iPad应用程序中,我试图用模态表单样式展示我的一种视图。 这是一些代码:

-(void)present
{
    SecondViewController *modal = [[SecondViewController alloc]init];
    modal.modalPresentationStyle = UIModalPresentationStyleFormSheet;
    [self presentModalViewController:modal animated:YES];
}

我正在使用情节提要,并且已在要显示的视图中放置了诸如textView和工具栏之类的东西。 我在Identity Inspector中设置了正确的类,并在类文件中检查了NSLog(@"Right view");出现的正确视图NSLog(@"Right view");

当调用存在的空白时,将出现一个视图,但仅显示为深白色正方形。 故事板中的内容没什么,我什至尝试更改视图和textView的背景颜色以查看某物是否刚刚在正方形之外,但整个东西都保持白色。 感觉好像没有使用我在情节提要中创建的视图,但是我将其设置为正确的类,并且在调用它时会打印出NSLog。 我没有在Storyboard中以任何方式连接两个视图,SecondViewController只是在浮动,所以可能是问题所在? 要求-(void)present的按钮是通过编程方式创建的,因此我也无法按住Ctrl键并将其拖动到该按钮上。

为什么显示我班级的空白版本?

在“身份检查器”中,为您的ViewController设置一个“故事板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];
    }

您的问题是,您假设程序本质上知道在哪里可以找到该控制器的视图,而这并不是情节提要板的工作原理。 您列出的代码将创建一个视图控制器 ,但是如果没有关联的视图 ,它将仅显示为黑色正方形。

有几种方法可以解决您的难题:

  • 将模式转换添加为视图控制器中的segue,这将是最简单的方法,也是iOS故事板希望您执行的操作。
  • 将视图从情节.xib板移到外部.xib然后调用initWithNibName:bundle:方法将其加载为视图控制器的视图。 如果只想以编程方式加载视图,则这是最佳解决方案。
  • 使用instantiateViewControllerWithIdentifier:方法以编程方式从情节提要中加载视图,这可能是个坏主意,因为它与情节提要的设计背道而驰。

如果您愿意,我可以详细说明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM