2014-11-21 74 views
0

我很困惑如何處理iPhones上的分割視圖控制器,而不是處理像iPad那樣的分割視圖控制器的6 Plus。我希望詳細視圖控制器成爲這些iPhone上出現的根視圖控制器。iPhone上的UISplitViewController的當前詳細視圖控制器

編輯

我能得到我想要加入這兩個委託方法的行爲。現在分割視圖控制器摺疊到詳細視圖控制器,而不是iPhone上的主視圖控制器。

- (UIViewController *)primaryViewControllerForCollapsingSplitViewController:(UISplitViewController *)splitViewController 
{ 
    return self.detailNavigationController; 
} 

- (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController 
{ 
    return YES; 
} 

問題1

我得到這個消息現在在控制檯中,當我把我的主視圖控制器在iPhone上的細節視圖控制器的導航控制器。它工作正常,所以我不明白爲什麼我會收到此消息。

Unbalanced calls to begin/end appearance transitions for <MasterTableViewController: 0x7fc8d2b67220>. 

問題2

我不上時分割視圖控制器iPhone上摺疊以檢測所述優選方式明確。我正在使用UIViewControllerShowDetailTargetDidChangeNotification通知來檢測此更改,但我覺得應該爲此更改提供某種委託方法。

+0

回答這個問題http://stackoverflow.com/questions/25875618/uisplitviewcontroller-in-portrait-on-iphone-shows -detail-vc-instead-of-master可以幫助 – 2014-11-21 20:23:55

回答

1

如果您使用的是默認模板創建的UISplitViewController,你會發現這個方法在AppDelegate的文件

- (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController { 
    if ([secondaryViewController isKindOfClass:[UINavigationController class]] && [[(UINavigationController *)secondaryViewController topViewController] isKindOfClass:[DetailViewController class]] && ([(DetailViewController *)[(UINavigationController *)secondaryViewController topViewController] detailItem] == nil)) { 
     // Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded. 
     return YES; 
    } else { 
     return NO; 
    } 
} 

當返回YES此方法處理UISplitViewController在小屏幕設備上的默認行爲,爲您解決問題你必須返回NO。下面

- (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController { 
    if ([secondaryViewController isKindOfClass:[UINavigationController class]] && [[(UINavigationController *)secondaryViewController topViewController] isKindOfClass:[DetailViewController class]] && ([(DetailViewController *)[(UINavigationController *)secondaryViewController topViewController] detailItem] == nil)) { 
     // Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded. 
     return NO; 
    } else { 
     return NO; 
    } 
} 

的代碼替換方法具有看看documentation

+0

感謝您的回答。分割視圖控制器正在丟棄詳細視圖控制器,無需使用委託。我只是無法呈現它。我不斷得到一個'應用程序試圖呈現一個主動控制器'崩潰。 – 2014-11-21 21:08:04

相關問題