我有一個UIViewController
,它是在故事板中創建的,並且已分配故事板ID。這個UIViewController
在代碼中的不同位置被實例化,因此從所有不同的位置創建segse是沒有意義的。在故事板中創建自定義UINavigationController不是實例化視圖
視圖控制器需要包含在UINavigationController中才能正常工作,因爲它使用各種導航欄項目並可以推送其他視圖控制器。
// some where in code that needs to present the custom view controller
UIViewController *viewControllerToPresent = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[self.viewController presentViewController: viewControllerToPresent animated:YES];
問題是,視圖控制器不包含在導航控制器從故事板預期:
視圖控制器從代碼如下實例化。我已經試過含分配UINavigationController的故事板ID的,但造成的prepareForSegue
現有代碼的問題其預期的CustomViewController
顯而易見的選擇一個實例來解決,這將是呈現CustomViewController
前添加一個UINavigationController的創作:
UIViewController *viewControllerToPresent = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController: viewControllerToPresent];
[self.viewController presentViewController: nav animated:YES];
但是,這並不能解決問題,因爲故事板中的導航項目沒有正確添加。
對我來說似乎更合理的是,CustomViewController
繼承自UINavigationController
並在storyboard中構建整個事物,以使自定義視圖控制器包含自己的導航欄。
我見過類如UIImagePickerController
從UINavigationController
繼承,我相信正是這種情況下,他們試圖解決。
問題是,當我更改CustomViewController從UINavigationController
繼承,當從故事板ID實例化視圖控制器時,視圖返回空。故事板根本不構建視圖。
這是可以修復的東西嗎?