addChildViewController alternative for iOS 4.3

2020-03-26 06:10发布

问题:

I would like to use the same functionality of addChildViewController, but for the version 4.3 (addChildViewController is only available in version 5). Thanks in advance.

回答1:

Although it's not recommended, you can create an instance of a UIViewController access it's view property and set it as a subview of the main view your main UIViewController is managing. It works, and I never experienced a problem with this.

That said, the recommended way is to have a NSObject subclass to act as your sub-controller, and not use a UIViewController as it has special behavior.



回答2:

Something similar is explained in iOS: different addSubview behavior between iOS 4.3 and 5.0.

I have solved it by adding these lines:

NSMutableArray *controladores=[[NSMutableArray alloc]init];
        [controladores addObject:myController];
        if ([[[UIDevice currentDevice] systemVersion] compare:@"5.0"] == NSOrderedAscending) {
            [tabBar setViewControllers:controladores animated:YES];
        }


回答3:

I assume the reason you want to do this is for ipad application, as Apple state that a single view controller should "generally" (and before ipad existed they stated "always") control a whole screen full of views.

This really only changed with the extra screen real estate of the ipad when Apple made their own container view controller (splitViewController) which ultimately led to Apple allowing us to create our own container view controllers in ios5.

If your app is an iphone app then I (and Apple) would seriously question your need for view controller containment.