2012-02-29 10 views
0

私は1つのマスター・スプリット・ビュー・コントローラー(マスター・ディテール・ビュー)を持っていますが、別のスプリット・ビュー・コントローラーを同じ意味で表示し、2つのUISplitViewControllerを互換的に表示

私が現在行っていることは、最初のsplitviewの詳細ペインでボタンを押すと、splitviewcontrollerプロパティのコントローラが変更されることです。

self.splitViewController.viewControllers = vc.splitViewController.viewControllers;

今、私は私の新しくロードされたコントローラから元splitviewをバック表示したいです。私はこのコードでこれを達成することができます:

HomeLeftDetailViewController* mc = [storyboard instantiateViewControllerWithIdentifier:@"LeftViewController"]; 
     UIViewController* dt = [storyboard instantiateViewControllerWithIdentifier:@"RightViewController"]; 
     self.splitViewController.viewControllers = [[NSArray alloc]initWithObjects:mc, dt,nil]; 

これはきれいな方法ではないと思います。

アイデア?

更新

これは、私はそれを固定している方法です。

これは良い解決策ではありませんが、後で私はこのメモリの問題を改善したいかもしれませんが、うまくいきます。

これにより、第2 SplitViewコントローラ

のボタン操作で書かれたコード
HomeViewController* hvc = [storyboard instantiateViewControllerWithIdentifier:@"HomeScreen"]; 
UINavigationController *kkc = [hvc.viewControllers objectAtIndex:0]; 
UIViewController *kkc2 = [hvc.viewControllers objectAtIndex:1]; 
// HomeLeftDetailViewController* mc = [storyboard instantiateViewControllerWithIdentifier:@"LeftViewController"]; 
// dt = [storyboard instantiateViewControllerWithIdentifier:@"Profile"]; 
self.splitViewController.viewControllers = [[NSArray alloc]initWithObjects:kkc, kkc2,nil]; 

ホーム画面が最初splitviewコントローラビューの識別子です。

HomeViewController* hvc = [storyboard instantiateViewControllerWithIdentifier:@"HomeScreen"];はマスター詳細ビューを作成すると仮定しますが、self.splitViewController.viewControllers = hvc.viewControllersはポインタを割り当て、ビューが画面から外されたときには破棄されます。

もっと分かち合うものが見つかったら、これについての更新情報をお知らせします。

答えて

0

2つの分割ビューコントローラーの起動を処理するトップレベルのビューコントローラー(汎用)があると考えられます。次に、VCを切り替えるボタンは、トップレベルのコントローラに現在の分割VCを破棄し、他のVCを終了するように要求することができます。 segueを使用すると、コントローラがメモリを効率的に使用していることが保証されます(必要な場合はインスタンス化され、画面外の場合はdeallocされます)。これも良いことは、ストーリーボードですべてを結びつけることができるということです。ジェネリックトップレベルあなたがして(必要に応じて)、背面のボタンをツールバーといくつかの利便性を得るため、あなたがナビVCを使用する場合がありますについては

など

幸運、

ダミアン

関連する問題