【问题标题】:getting error when running app as iPad instead of iPhone in xcode 4在 xcode 4 中将应用程序作为 iPad 而不是 iPhone 运行时出错
【发布时间】:2012-02-06 05:32:21
【问题描述】:

我有一个一直在做的项目。这是一个仅限 iPhone 的项目,但最近发现我也需要将它提供给 iPad。理论上,我应该能够放入一些 if 语句来在 iPhone/iPad 代码之间切换,但我遇到了一个小问题。在我最初的观点上,我得到了臭名昭著的错误:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIApplication 0x8a2dcf0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key loginButton.'

loginButton 指向一个 UIButton,我的 Login_iPad.xib 中的所有内容都正确链接。

我确定我遗漏了一些小东西,但非常感谢任何帮助。

谢谢!

这是我在 AppDelegate 中的一些代码 - didFinishLaunchingWithOption:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    UIViewController *rootView = [[Login alloc] initWithNibName:@"Login" bundle:nil];
    self.navController = [[UINavigationController alloc] initWithRootViewController:rootView];
} else {
    UIViewController *rootView = [[Login alloc] initWithNibName:@"Login_iPad" bundle:nil];
    self.navController = [[UINavigationController alloc] initWithRootViewController:rootView];
}

更新:如果我删除所有的出口(包括视图出口),我当然会得到这个错误:

loaded the "Login_iPad" nib but the view outlet was not set

但是,如果我只添加视图的出口,我会得到:

this class is not key value coding-compliant for the key view

对我来说没有意义。我将 XIB 的类设置为与 iPhone XIB 相同的类。但是,我知道我忽略了一些东西。

作为 iPad 应用程序运行时,我似乎无法链接任何内容。甚至视图都没有……否则它会抛出该错误。

【问题讨论】:

  • 听起来你的 iPad 笔尖上的插座连接不正确...
  • 你的xib有问题,如果有任何警告,你检查所有属性了吗?

标签: iphone xcode cocoa-touch ipad uibutton


【解决方案1】:

好的...不知道为什么这解决了我的问题。但是,我在项目摘要中删除了 iphone 和 ipad 的“主界面”值。它运行得很好。很奇怪。

我不知道这是否有所作为,但我也在我的 appdelegate 中更改了这一点:

UIViewController *rootView;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
    rootView = [[Login alloc] initWithNibName:@"Login_iPad" bundle:nil];
} else {
    rootView = [[Login alloc] initWithNibName:@"Login" bundle:nil];
}
self.navController = [[UINavigationController alloc] initWithRootViewController:rootView];

【讨论】:

  • 花了太多时间试图弄清楚这一点。谢谢
  • 它将主界面更改为对我有用的主窗口。
  • 我可以吻你。我一遍又一遍地遇到完全相同的问题,并且花了几个小时倾注我的代码只是为了擦除项目中的“主界面”并且它工作正常。我在 App Delegate 中有类似的代码,为了记录,没有更改它,它仍然解决了问题。什么鬼……
【解决方案2】:

确保您已检查目标/摘要/设备并将其设置为通用。

【讨论】:

  • 我已经做到了。不过还是谢谢你。我已经删除并重新添加了我在 xib 文件中的所有连接。它附加到正确的类。非常令人沮丧......我敢肯定这是我忽略的简单事情。
  • 确保两个 xib 中的拼写完全相同,有时一个微小的拼写错误(例如 - 而不是 _)会导致无法形容的悲伤。我们知道问题出在“loginButton”所以检查与此有关的一切。断开的连接也可能导致此错误。在代码中建立连接然后删除,但在 xib 中仍然连接。
  • 我可以对两个 xib 文件使用相同的 .h 和 .m 文件...对吗?
猜你喜欢
  • 2011-05-25
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
相关资源
最近更新 更多