我有一个适用于iPad的大师级详细应用。但是,iPhone版本不起作用,因为发送到iPad版本中的DetailViewController
的变量不会发送到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
返回DetailViewController
后点击表格单元格时出现问题:http://www.grapekeeper.com/storyboards.png
答案 0 :(得分:4)
也许以下几点?
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// perform iPad logic
} else {
// perform iPhone logic
}