我试图制作一个始终加载相同笔尖的视图控制器。我的初始化代码如下所示:
-(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];
}
问题是此代码导致视图控制器具有零视图。我在这里做错了吗?有更好的方法吗?
感谢。
答案 0 :(得分:7)
检查以下内容:
如果在检查这三个步骤后仍然遇到问题,请提供用于实例化和设置自定义视图控制器的代码。
答案 1 :(得分:5)
我遇到了同样的问题。
我检查了所有选项,因为选择的答案说并没有为我解决问题。
我的问题是视图的自动布局已启用(但我不知道为什么,因为此功能,视图始终为零;如果有人知道,请发表评论)。
要禁用自动布局,请转到“文件检查器”并取消选中“使用Autolayout”选项(参见图)。
希望帮助别人。
答案 2 :(得分:3)
有一点需要注意的是,如果您为nil
传递nibName
,根据文档,请按此顺序进行搜索(强调添加):
如果视图控制器类名称以“Controller”结尾,则为 在MyViewController中,它查找名称与之匹配的nib文件 没有单词“Controller”的类名,如 MyView.nib 。
它查找名称与视图名称匹配的nib文件 控制器类。例如,如果类名是MyViewController, 它会查找 MyViewController.nib 文件。
我有一个普通的香草视图,其基本相同的名称没有“Controller”的末尾加上后缀。它正在加载它而不是预期的笔尖。
答案 3 :(得分:1)
您的代码对我来说很合适。是否可能以不同的方式命名您的XIB文件(设备上的情况很重要),以及它们是否是正确目标的成员?