2016-10-06 6 views
0

私はUITabBarControllerの中にUISplitViewControllerを持っています。今、私がボタンをクリックすると、私はこれらの2つのコントローラを残して、別のViewControllerを表示したいと思います。SplitViewControllerをTabBarController内から離しておきます

私はこのコードを使用しています:

- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; 
    RegistrationViewController *vc = (RegistrationViewController *)[storyboard instantiateViewControllerWithIdentifier:@"RegistrationViewController"]; 
    UIWindow *window = [UIApplication sharedApplication].keyWindow; 
    window.rootViewController = vc; 
} 

を、RegistrationViewControllerは、第二のためにポップアップ表示されますが、すぐに消えます。 RegistrationViewControllerをどうやって泊めることができますか?アップルのドキュメント毎

答えて

0

」...いくつかの他のコンテナビューコントローラ内の子として分割ビューコントローラをインストールすることは可能ですが、やってはで推奨されていませんほとんどの場合スプリットビューコントローラは、通常、アプリのウィンドウのルートにインストールされます。インターフェースの実装方法に関するヒントやガイダンスについては、「iOSヒューマンインターフェイスガイドライン」を参照してください。

そうしないと予期せぬ動作が発生し、App Storeの送信が拒否されることがあります。

あなたはより良い詳細.primaryHiddenからUISplitViewController.preferredDisplayModeは(あなたのフルスクリーンプレゼンテーションを、左1/3「マスタービュー」を隠す設定しUISplitViewController.

のビューコントローラとしてUITabBarControllerを埋め込むことによって提供することができますUITabBarController。)showDetailViewControllerを呼び出してRegistrationViewControllerを提示することができます。

FWIW、をUISplitViewControllerの「マスター」と「詳細」として埋め込み、表示するナビゲーションスタックにビューをプッシュしてポップしました。 NavControllersを使用する利点についてのより多くの議論と、ここで素晴らしいチュートリアル、: https://www.raywenderlich.com/94443/uisplitviewcontroller-tutorial-getting-started

一部スウィフトコード:

(提示その後、UISplitViewController,の唯一の詳細ビューを示す、マスターとディテールなどのnavコントローラと、上記のアプローチを使用して。詳細ビューなどの新しいビューコントローラ)別の場合

@IBAction func createAccountButtonSelected(_ sender: AnyObject) { 
    let registrationVC = self.storyboard?.instantiateViewController(withIdentifier: "RegistrationViewController") as! RegistrationViewController 
    self.navigationController?.pushViewController(registrationVC, animated: true) 
} 

は、私は()詳細ビューコントローラからUISplitViewControllerの両方のマスターとディテールビューのナビゲーションスタックをリセットしたい:

let firstVC = self.storyboard?.instantiateViewController(withIdentifier: "FirstViewController") as! FirstViewController 
let secondVC = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController 
    // Get a reference the the Master View nav controller 
let masterNav = self.splitViewController!.viewControllers[0] as! UINavigationController 
    // Set desired VC's as nav stack RootViewControllers   
self.navigationController?.setViewControllers([matchVC], animated: true) 
masterNav.setViewControllers([masterMatchTableView], animated: true) 
+0

も参照してください。 http://nshipster.com/uisplitviewcontroller/ –

関連する問題