9

SplitViewController を使用して、ストーリーボードで定義された iPad インターフェイスがあります。SplitViewController のデリゲートを詳細コントローラーを指すように設定したいのですが、IB はその接続を許可しません。

  • 「オブジェクト」オブジェクトを配置し、クラスを詳細コントローラーのクラスに変更すると、デリゲートは、表示されているものとは異なる詳細コントローラーのインスタンスをポイントします。
  • アプリのデリゲートで (didFinishLaunching で) 手動で接続しようとしても無駄でした。デリゲートはまだゼロでした。
  • デリゲートを AppDelegate に変更し、そこにプロトコルを実装すると機能しましたが、詳細コントローラーにメッセージを渡すことは機能しませんでした (同じインスタンスを参照していることを確認したにもかかわらず)。

何も機能しません。詳細ビューがいつ読み込まれるかを設定できself.splitViewController.delegate = self、問題なくデリゲートになります。しかし、その時点より前に発生したデリゲート呼び出しは見逃しています。

コンテキストについては、splitviewcontroller のデリゲート呼び出しを取得して、標準的な方法であるポップオーバーを表示するボタンを詳細ビューに表示できるようにする必要があります。現在、アプリを縦向きで起動した場合、ボタンを表示するには横向きに回転させてから元に戻す必要があります。

私は問題なく「通常の」xibsでこれを行いました。これは、ストーリーボードのシーンをまたいでアウトレットを接続できないという、より一般的な問題の特殊なケースのようです。

4

1 に答える 1

9

これが今回、最初の80回ではなく、なぜ機能したのかわかりませんが、これをAppDelegateに追加しました。

UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;
于 2012-01-23T16:44:43.747 に答える