UIViewController initWithNibName结果为零视图

我试图做一个视图控制器,将始终加载相同的笔尖。 我的初始化代码如下所示:

-(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]; } 

问题是这个代码导致视图控制器没有视图。 有什么我在这里做错了吗? 有一个更好的方法吗?

谢谢。

检查以下内容:

  1. XIB_iPad.xib和XIB_iPhone.xib都存在于您的项目中。
  2. 每个xib文件的“文件所有者”都是正确的类(YourViewController)。
  3. 每个文件所有者视图出口(在xib文件中)都正确链接到一个视图。

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

我有同样的问题。

我检查了所有的选项作为select答案说,并没有解决问题给我。

我的问题是,视图的自动布局被启用(但我不知道为什么,因为这个function,视图总是作为零;如果有人知道,请评论)。

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

希望帮助别人。

在这里输入图像说明

有一点需要注意的是,如果你按照文档给nibName传递nil ,按照这个顺序search(强调增加):

如果视图控制器类名称以“Controller”结尾,就像在MyViewController中一样,它会查找一个名称与没有“Controller”的类名相匹配的nib文件,就像在MyView.nib中一样

它会查找名称与视图控制器类名称相匹配的nib文件。 例如,如果类名是MyViewController,它将查找MyViewController.nib文件。

我有一个普通的香草意见,基本上是相同的名称, 没有 “控制器”结尾。 它正在加载这个而不是想要的笔尖。

你的代码看起来很适合我。 是否有可能您的XIB文件命名不同(设备上的大小写问题),并且它们是正确目标的成员?