我有一個UINavigationController的應用程序,它包含一個根UIViewController子類(PagingViewController),它管理和充當水平分頁UIScrollView的代理。在這個UIScrollView的每個頁面上,都有一個垂直滾動的UITableView,每個UITableView都由它自己的UIViewController子類(PageViewController)管理。它看起來是這樣的......嵌套的UIViewController需要推到根UINavigationController
UINavigationController
PagingViewController (root VC of navigation controller)
PageViewController (instance 1)
PageViewController (instance 2)
PageViewController (instance 3)
HowToPushThisViewController (this is what I'd like to push onto the current root, PagingViewController, from one of its sub view controllers)
我希望做的是,在didSelectRowAtIndexPath方法:在PageViewController(UITableView的委託)的方法,推動了新的UIViewController到UINavigationController的(在PagingViewController的頂部)。
問題是PageViewController的navigationController屬性爲零,所以我不能將它推到那裏。我認爲這是零,因爲它不直接在UINavigationController的堆棧上,但包含的PagingViewController,其中是在堆棧上。我嘗試在將每個PageViewController的navigationController屬性添加到PagingScrollView之前設置它的navigationController屬性,但它似乎是隻讀的(UINavigationController如何設置它自己?)。我覺得嵌套的UIViewControllers是健全的體系結構(每個人都需要管理和充當其視圖的委託),並且想要從子控制器中推導導航是合理的,所以我不確定最好的練習從嵌套控制器訪問和推送。希望有一些簡單的東西可以忽略,可以訪問並推送到根naviagtion控制器。
或者,覆蓋`-parentViewController`。這似乎允許一些UIViewController魔術工作,包括(我認爲)-navigationController。伊西,不過! – 2010-11-23 04:33:47