1

我有一个非常适合 iPad 的主从应用程序。但是,iPhone 版本不起作用,因为DetailViewController在 iPad 版本中发送到 的变量不会发送到 iPhone DetailViewController。我可以在实现中用一行代码解决这个问题MasterViewController

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    self.detailViewController=segue.destinationViewController;
}

不幸的是,当我实现该代码时,iPad 版本停止工作。当我从另一个视图控制器 ( HomeViewController) 返回到DetailViewController. 该错误日志是:

2012-07-14 14:29:12.924 46 Tracker[2772:11603] -[HomeViewController setDetailItem:]: unrecognized selector sent to instance 0x7cad4f0
2012-07-14 14:29:12.925 46 Tracker[2772:11603] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[HomeViewController setDetailItem:]: unrecognized selector sent to instance 0x7cad4f0'
*** First throw call stack:
(0x148a022 0x201acd6 0x148bcbd 0x13f0ed0 0x13f0cb2 0x2cb0 0x2d75c5 0x2d77fa 0xb6c85d 0x145e936 0x145e3d7 0x13c1790 0x13c0d84 0x13c0c9b 0x16a07d8 0x16a088a 0x246626 0x1fdd 0x1f45)
terminate called throwing an exception(lldb) 

那么,有什么方法可以让我只在用户使用 iPhone 时才运行第一个代码块?或者,我可以修复代码以使其在两个设备上都能正常工作吗?

这是我的 iPad 故事板的链接,以(希望)使其更清晰。HomeViewController当我点击表格单元格后,我遇到了问题:http DetailViewController: //www.grapekeeper.com/storyboards.png

4

1 回答 1

4

也许是以下?

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    // perform iPad logic
} else {
    // perform iPhone logic
}
于 2012-07-14T18:49:50.767 回答