3

UIViewController単一の子を持つ単純なコンテナを作成していUIViewControllerます。

コンテナのwillMoveToParentViewController:andメソッドで子を送信する必要がありますか?removeFromParentViewControllerUIViewControllerdeallocviewDidUnload

私は使用していますARC

4

1 に答える 1

0

これは遅いかもしれませんが、同じ問題がありました。NSLog でテストしたところ、子コントローラーで dealloc メソッドが呼び出されませんでした。

私の場合、子コントローラーを持つ親コントローラーがありますが、この親は別のスーパー親コントローラーの子でもあります。

したがって、私の解決策は、 willMoveToParentViewController を実装し、そこで子を削除することです。

- (void) willMoveToParentViewController:(UIViewController *)parent;
{
    if (parent == nil) {
        NSLog(@"removing my self");
        [_childViewController willMoveToParentViewController:nil];
        [_childViewController removeFromParentViewController];
        [_childViewController.view removeFromSuperview];
        _childViewController = nil;
    }
}

しかし、私の場合、この親は別の親コントローラーの子であるため、このメソッドを呼び出しました。

// removing the parent from super parent controller
[_parentViewController willMoveToParentViewController:nil];
[_parentViewController removeFromParentViewController];
[_parentViewController.view removeFromSuperview];
_parentViewController = nil;

あなたのケースについてはわかりませんが、これが私と同じ問題を抱えている可能性のある他の人に役立つことを願っています.

于 2013-01-07T14:10:01.280 に答える