Container UIViewController Nicht Loslassen, das Kind von View-Controllern

Ich habe einen custom-container UIViewController, hat sechs untergeordnete UIViewControllers, und eine Reihe von Registerkarten, mit denen der Benutzer interagiert mit wechseln Sie zwischen den child-view-Controller. Das problem ist, wenn mein container view controller freigegeben wird das Kind view-Controller nicht.

Habe ich festgestellt, dass die child-view-Controller nicht freigegeben werden, durch hinzufügen von debugging-code zu Ihren dealloc Methoden, und Sie sind freigegeben, so lange als Ihr Blick ist nicht mehr auf die container view controller view.

Unten ist ein Auszug aus dem code, den ich verwende, um meine custom container view controller. Der viewController Zeiger sind iVars. Ich bin auch mit ARC, so dass ist, warum gibt es keine aktuelle Version fordert.

- (void)init 
{
    if ((self = [super init])) { 
        vc1 = [[UIViewController alloc] init];
        [self addChildViewController:vc1];

        vc2 = [[UIViewController alloc] init];
        [self addChildViewController:vc2];

        vc3 = [[UIViewController alloc] init];
        [self addChildViewController:vc3];

        vc4 = [[UIViewController alloc] init];
        [self addChildViewController:vc4];

        vc5 = [[UIViewController alloc] init];
        [self addChildViewController:vc5];

        vc6 = [[UIViewController alloc] init];
        [self addChildViewController:vc6];
    }
    return self;
}

- (void)dealloc
{
    [vc1 removeFromParentViewController];
    vc1 = nil;

    [vc2 removeFromParentViewController];
    vc2 = nil;

    [vc3 removeFromParentViewController];
    vc3 = nil;

    [vc4 removeFromParentViewController];
    vc4 = nil;

    [vc5 removeFromParentViewController];
    vc5 = nil;

    [vc6 removeFromParentViewController];
    vc6 = nil;
}

- (void)switchFromViewController:(UIViewController *)fromViewController toViewController:(UIViewController *)toViewController
{
    if (fromViewController) {
        [fromViewController.view removeFromSuperview];
    }

    [self.view addSubview:toViewController];
    toViewController.view.frame = self.view.bounds;
}

Habt Ihr alle eine Idee, was ich falsch mache?

InformationsquelleAutor der Frage miken.mkndev | 2012-12-12

Schreibe einen Kommentar