1

iPad でうまく機能するマスター/ディテール アプリがあります。DetailViewControllerただし、 iPad バージョンでに送信されている変数がiPhone に送信されないため、iPhone バージョンは機能しませんDetailViewControllerMasterViewControllerこれは、実装時に 1 行のコードで修正できます。

- (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ストーリーボードへのリンクです。http://www.grapekeeper.com/storyboards.pngHomeViewControllerに戻った後に表のセルをクリックすると問題が発生しますDetailViewController

4

1 に答える 1

4

もしかして以下?

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