UIViewController initWithNibName导致nil视图

Set*_*eth 0 iphone uiviewcontroller uiview nib ios

我正在尝试制作一个始终加载相同笔尖的视图控制器.我的初始化代码如下所示:

-(id)init
{
    NSString* nibName;

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        nibName = @"XIB_iPad";
    else
        nibName = @"XIB_iPhone";

    self = [super initWithNibName:nibName bundle:nil];
    if (self)
    {
        ...
    }
    return self;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    return [self init];
}
Run Code Online (Sandbox Code Playgroud)

问题是该代码导致视图控制器具有零视图.我有什么问题吗?有一个更好的方法吗?

谢谢.

die*_*dez 7

检查以下内容:

  1. 您的项目中都存在XIB_iPad.xib和XIB_iPhone.xib.
  2. 每个xib文件的"文件所有者"都是正确的类(YourViewController).
  3. 每个文件所有者视图插座(在xib文件中)都正确链接到视图.

如果在检查这三个步骤后仍然遇到问题,请提供用于实例化和设置自定义视图控制器的代码.


rei*_*man 5

我有同样的问题.

我检查了所有选项,因为选择的答案说,并没有为我解决问题.

我的问题是视图的自动布局已启用(但我不知道为什么,因为此功能,视图始终为零;如果有人知道,请发表评论).

要禁用自动布局,请转到"文件检查器"并取消选中"使用Autolayout"选项(参见图).

希望有人帮忙.

在此输入图像描述