0

アプリケーションの didFinishLaunchingWithOptions:メソッドで、 detailViewControllerへの参照を取得しようとしています。しかし、ここで私は問題に直面します。

次の Views 構造はstoryBoard ( iPad 用) です。

UISplitViewController --> UINavigationController --> UITableViewController --> detailViewController

UITableViewControllerCelldetailViewControllerの間に「 push」 スタイルのセグエを作成しました

スクリーンショット: http://picturepush.com/public/13071076

この方法でdetailViewControllerへの参照を取得しようとしています:

    UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;

    UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
    DetailViewController *detailViewController = [navigationController.viewControllers lastObject];

しかし、結果として、受け入れられる DetailViewControllerではなく、 UITableViewControllerへの参照を取得しました。navigationController.viewControllersのカウントは 1 ですが、2 あるはずです (そう思います)。

あなたの助けを願っています。

4

1 に答える 1

0

プッシュスタイルでセグエを作成したため、detailViewController は、テーブル ビュー セルをタップした後にのみ読み込まれます。didFinishLaunchingWithOptionsappメソッドにはロードされません。

テーブルビューコントローラーのプロパティとしてdetailViewControllerを作成することをお勧めします。

@property (nonatomic, strong) UIViewController *detailViewController;

次に、アプリの didFinishLaunchingWithOptions メソッドで、プロパティにアクセスできます。

UITableViewController *tableViewController = [navigationController.viewControllers lastObject];
DetailViewController *detailViewController = tableViewController.detailViewController;

pushViewControllerただし、セグエ実行関数の使用を避け、通常の方法で必要なときにいつでも詳細ビュー コントローラーをプッシュする必要があります。

[self.navigationController pushViewController:self.detailViewController animated:YES];
于 2013-05-19T10:51:01.393 に答える