2015-12-20 68 views
0

我有其上顯示不同,這取決於上下文UIViewController如何爲特定的UIViewController設置默認的後退UINavigationItem?

  • 作爲UINavigationController的第一控制器(無回導航欄)
  • 作爲UINavigationController頂級控制器(背面導航欄)
  • 作爲兩個UISplitViewController的控制器的一個

但我需要一個不同於默認圖標的圖標。爲了避免每次檢查上下文並分配它,我想向控制器顯示它是如何工作的,並在需要時自行分配它。

可能嗎?如果是這樣,我該怎麼辦?

+0

如果我正確理解你的問題。我想你每次都需要檢查。你是否試圖問是否有更好的邏輯來處理? –

回答

0

您可以使用一些UIViewController屬性來確定視圖控制器在視圖控制器層次結構中的位置。這兩個特別是splitViewControllernavigationController

splitViewController返回視圖控制器層次最近UISplitViewController祖先。如果沒有,該物業是nil

navigationController基本上是同樣的事情splitViewController。它返回視圖控制器層次最近UINavigationController祖先是nil如果沒有,則存在。

這裏是你將如何確定的3個場景視圖控制器(假定沒有其他場景):

if let splitVC = viewController.splitViewController { 
    // split view controller scenario 
} else if let navigationVC = viewController.navigationController { 

    if navigationVC.viewControllers[0] == viewController { 
     // first controller scenario (no back button) 
    } else if navigationVC.topViewController == viewController { 
     // top controller scenario (back button) 
    } 

} 
相關問題