【问题标题】:Cant load xib file from UIViewController无法从 UIViewController 加载 xib 文件
【发布时间】:2012-03-07 16:50:08
【问题描述】:

我正在尝试从我的UIViewController 加载一个 xib 文件。

在.h中

UIView *myView;

@property(nonatomic, retain) IBOutlet UIView *myView;

在我的 .m 中

@synthesize myView;

if([[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]) { 
            [self.myView setFrame:CGRectMake(0, 0, 320, 480)];

            [[UIApplication sharedApplication].keyWindow addSubview:self.myView];

}

我从同一个UIViewController 加载和删除xib 文件。在上述情况下,我使用了相同的代码,并且有效。它是一个似乎有问题的特定 xib 文件。我检查了窗口是否为零。但它不是。无法弄清楚问题是什么。

编辑:self 是否有可能提前释放

在加载这个 xib 文件之前,我使用相同的代码加载另一个 xib 文件。这很好用。我正在尝试在此视图上方加载当前的 xib 文件。

【问题讨论】:

  • 您检查 xib 名称了吗?有时我们会错过导致大问题的小事!
  • 您检查过您在 IB 中的绑定吗?
  • 我已经重新检查了 IB 并且绑定没有问题。我没有收到任何错误。只是没有加载 xib 文件(UIView)。

标签: iphone ios uiview uiviewcontroller


【解决方案1】:

试试这个:

if([[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] objectAtIndex:0]) { 
            [self.myView setFrame:CGRectMake(0, 0, 320, 480)];

            [[UIApplication sharedApplication].keyWindow addSubview:self.myView];

}   

我认为问题可能是“loadNibNamed”返回一个顶级对象的 NSArray。

【讨论】:

    【解决方案2】:

    也许请确保您的 xib 文件已添加到目标的 Copy Bundle Resources 部分,在 Build Phases 部分。 (并仔细检查它是否已添加到导航菜单资源中)。

    【讨论】:

      【解决方案3】:

      如果您在另一个UIView 上加载此视图,并且该UIView 加载正确,那么您可以将此视图添加为UIView 的子视图。

      【讨论】:

      • 这与问题无关。
      • 但这似乎不是答案,尽管它在我的情况下工作正常。
      猜你喜欢
      • 2014-10-21
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 2012-09-24
      • 2013-03-14
      • 2013-08-09
      • 2022-01-02
      相关资源
      最近更新 更多