複数のWebアドレスとラベルのクリックを処理するために、ビューにビューを追加する必要があります。私はforステートメントでそれをやろうとします。私のコードはそのようなものです:
// we have a UITabbarViewController for holding amongs other the parentViewController
UITabBarController *tabbedViewController = [[UITabBarController alloc] init];
// create the parentViewController
ParentViewController *parentViewController = [[ParentViewController alloc] initWithNibName:@"parentViewController" bundle:nil];
[parentViewController.view setNeedsDisplay];
// add parentViewController into tabbedViewController
tabbedPlayerViewController.viewControllers = [NSArray arrayWithObjects: ... parentViewController, nil];
// All the things are inside a UINavigationController
// push the view
[self.navigationController pushViewController:tabbedViewController animated:YES];
// setting up the views individually...
// not listed here
for (NSDictionary *url in urls) {
// init my controller with a nib file
UIViewController *webadressViewController = [[WebadressViewController alloc] initWithNibName:@"WebadressViewController" bundle:nil];
// position the view ...
// ... not listed here
// add webaddress to parent view
[parentViewController.view addSubview: webaddressViewController.view];
}
[parentViewController release];
[tabbedViewController release];
webaddressViewControllerの保持カウントが1であるため、メモリ管理の問題が発生する可能性があると思います。そのため、コードのどこかでリリースする必要があります。しかし、forブロック内でリリースすると、すべてのサブビューが消えます。
私の質問は、どうすればそのオブジェクトを解放できますか?
(問題は次のとおりです。parentViewControllerでaddSubviewを呼び出すと、webaddressViewController.viewは所有されますが、webaddressController自体は所有されません。したがって、webaddressViewControllerを解放すると、そのビューも表示されなくなります。)