0

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

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

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

谢谢。

4

4 回答 4

7

检查以下内容:

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

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

于 2012-05-27T02:45:21.910 回答
5

我有同样的问题。

我按照所选答案检查了所有选项,并没有为我解决问题。

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

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

希望帮助某人。

在此处输入图像描述

于 2013-02-25T17:29:08.940 回答
3

需要注意的是,如果您传递nilnibName根据文档,请按以下顺序进行搜索(强调添加):

如果视图控制器类名以单词“Controller”结尾,如 MyViewController 中,它会查找名称与类名匹配但不包含单词“Controller”的 nib 文件,如MyView.nib中。

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

我有一个简单的香草视图,其名称基本相同,最后没有“控制器”后缀。它正在加载这个而不是预期的笔尖。

于 2014-05-14T16:20:58.823 回答
1

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

于 2012-05-27T00:37:30.507 回答