【问题标题】:Xcode 4: Loading a Nib in a method in a different fileXcode 4:在不同文件的方法中加载 Nib
【发布时间】:2012-10-03 18:47:16
【问题描述】:

对不起,如果这个问题是基本的,但过去 2 天我一直被这个错误困扰,我无法解决它。我正在使用 Xcode 4.3.2

我正在尝试在名为 BController.m 的文件中名为“- (void) process”的方法中加载一个名为 AController.xib 的 nib

为了清楚起见,我将./A/AController.xib(这是一个UIView)、./A/AController.m、./A/AController.h复制到目录./B

我只提到这一点是因为我不确定这对我的问题是否重要。

目前,我的流程就像流程一样工作(这可能是我的问题):

  • 带有“购买”按钮的视图加载
  • 用户单击“购买”按钮,其中包含一个名为“buyNow”的 IBOutlet
  • “buyNow”调用“buy”,然后调用“process”
  • 进程然后尝试使用以下内容(选项 1)加载 nib:

    控制器 *blah; for(捆绑中的 id 对象){ if ([object isKindOfClass:[AController class]]) blah = (AController *) 对象; } assert(blah != nil && "blah can't be nil"); [self.view addSubView: blah];

我在这里得到的错误是 main.m 中的“线程 1:信号 SIGABRT” 我也试过(选项2),

AController *myView = [[AController alloc] initWithFrame:self.view.bounds];
[self.view addSubview:myView];
[AController release];

和(选项 3)

AController * vc = [[AController alloc] initWithNibBundle:@"AController" bundle:nil];    [self.nc pushViewController:vc animated:NO];

我对所有 3 个选项都得到了相同的错误。在方法“过程”中尝试了每个选项。 “过程”是用 B.m. 写的。任何人都可以提供一些帮助,以便我可以解决这个问题吗?关于这些选项为何失败的任何指导都将非常有助于我的理解,并将不胜感激。感谢您帮助菜鸟!

【问题讨论】:

  • ./A/AController.xib(这是一个 UIView)..我认为 nib 是用于 UIViewcontroller 而不是 UIView
  • AController.xib 是 UIView。 AController 是 UIViewController 的子类

标签: objective-c xcode xcode4.3 nib loadnibnamed


【解决方案1】:

如果AControllerUIView 子类,则它无法加载NIB。验证它实际上是一个控制器,但从 initWithFrame 以及您将它添加到视图的方式来看,它看起来不是,或者处理不正确。

【讨论】:

  • AController 是 UIViewController 的子类,而不是 UIView。我的意思是 AController.xib 是一个 UIView(通过查看 Identity Inspector)。
  • 在这种情况下,您要确保 [self.view addSubview:myView]; 行读取 [self.view addSubview:myView.view];
  • 这似乎也不起作用。为什么 main.m int retVal = UIApplicationMain(argc,argv,nil,nil) 会抛出“线程 1:信号 SIGABRT”错误?控制台显示:“*** 由于未捕获的异常 'NSUnknownKeyException' 导致应用程序终止,原因:'[ setValue:forUndefinedKey:]:此类与键 CVCField 的键值编码不兼容。”
  • 嗯,很有趣。这通常是与从类中删除 @property 相关的异常,但未在接口构建器中删除与它的连接,从而导致引发异常。检查您的 NIB 中的连接,看看是否有灰色显示。
  • 谢谢你diatrevolo。我想你可能正在做某事。来自 AController.xib 的连接保存在从目录 A 到目录 B 的副本中。这意味着,AController.xib 可能正在寻找不再存在的东西。您是否建议删除所有插座和连接并重新连接所有内容。可能缺少一些东西,但我没有删除@property。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
相关资源
最近更新 更多