誰かが私にこれを説明できるかどうか疑問に思っていました。ストーリーボードを使用してユニバーサル アプリを構築しています。iPhone バージョンには、マスター リスト ビューとサブリスト ビューを備えたナビゲーション コントローラーがあります (どちらもテーブル ビュー コントローラーです。
iPad アプリは分割ビュー コントローラーを使用して、iPhone と同じことを実現します (マスター リストと詳細リスト)。すべて問題ありませんが、「置換」セグエを使用して分割ビュー コントローラーの新しい詳細ビューに移行する場合、新しい詳細ビューを独自のナビゲーション コントローラー内に埋め込む必要がありますが、iPhone ではこれを行う必要はありません。 (すでにナビゲーション コントローラー内にあります。(うまくいけば、これは何らかの意味を持ちます)
私のコード(動作する)は次のようになります。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NotesListViewController *listNotesView;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
listNotesView = [[segue destinationViewController] topViewController];
} else {
listNotesView = [segue destinationViewController];
}
if ([segue.identifier isEqualToString:@"NotesByDate"]) {
[listNotesView setGroupType:@"date"];
} else if ([segue.identifier isEqualToString:@"NotesByTopic"]) {
[listNotesView setGroupType:@"topics"];
} else if ([segue.identifier isEqualToString:@"NotesBySpeaker"]) {
[listNotesView setGroupType:@"speaker"];
}
だから...問題は、IFステートメントの最初の条件が警告を生成していることです(UIViewControllerからNoteListViewControllerに割り当てられている互換性のないポインタータイプ)。ただし、これは UIViewController ではなく、UITableViewController です。iPhoneバージョンではUIViewになりますが、ここでは特にiPadをチェックしています。
私が言ったように、それは機能するので、これは実際には問題ではないかもしれませんが、警告が常に表示され、どのように/修正できるかがわからないことに少しイライラしています.
ストーリーボードの画像を少し投稿してみます。うまくいけば、これを説明するのに役立ちます.