开发者

What is the best way to change my UIViewController to a UINavigationController

开发者 https://www.devze.com 2022-12-20 02:49 出处:网络
I just realised that my \'root\' viewController should have been a UINavigationController. Now I want to change this to be a UINavigatio开发者_运维知识库nController instead and just curious what my be

I just realised that my 'root' viewController should have been a UINavigationController. Now I want to change this to be a UINavigatio开发者_运维知识库nController instead and just curious what my best option would be. I built this view and all other views using IB if that makes a different.

I'm mostly worried that I would have to do a lot of copy/pasting and recoding to get everything right or will be it be as easy as manually editing my controller and change the extension to UINavigationController.

Thanks


You do not convert an existing view controller into a navigation controller.

Even though UINavigationController is a subclass of UIViewController, it's task is the management of other view controllers, not the management of views themselves. You don't swap them out one for the other. Instead, you set UIViewControllers to be controlled by the nav.

To add a nav to a project in IB, open the xib and drag over a UINavigationController. Then set the navigation controller's rootControlller property to the existing UIViewController.

And you're done.


You can also "Embed" the Navigation Controller by selecting the View Controller in IB then select Editor->Embed In->Navigation Controller


You can instantiate a trivial not-subclassed UINavigationController and give it your original UIViewController as its root controller, like:

YourRootViewController *rootViewController = [[YourRootViewController] initHoweverYouInitIt];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootViewController];

and maybe an [rootViewController release];, depending on how you are going to manage memory.


UINavigationController has an 'is-a' relationship with UIViewController, so you should be able to change its class type in Interface Builder with no additional changes.

0

精彩评论

暂无评论...
验证码 换一张
取 消