0

標準を使用する iOS ユニバーサル アプリがありますUISplitViewController

アプリの作業を開始してから、左側のマスター ビュー コントローラーと右側の詳細ビュー コントローラーをリンクする次のコードを用意しました。

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.detailViewController = (CustomViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];
}

最近のいくつかの変更の後、最後の行が機能しなくなり、一部の機能が壊れました。この動作の理由self.splitViewControllernil、この時点です。最後の行を移動しviewWillAppear:て問題を解決しますが、私見ではこれは完全に正しい場所ではありません。

私が行った変更は、実際にはこれに関連していません。使用しているコントローラー階層やストーリーボードに変更を加えていません。したがって、この動作がどこから発生したのかを説明することはできません。ヒントをいただければ幸いです。

4

1 に答える 1

1

splitViewController インスタンスの動的アクセサーを作成して、nil を返さないようにするか、もちろん viewDidLoad で nil かどうかを確認することができます。

例えば

- (CustomViewController *)splitViewController 
{
    if (splitViewController == nil) {
      splitViewController = [[CustomViewController alloc] init]; 
    }
    return splitViewController; 
}
于 2013-06-09T20:21:38.680 に答える