您是否使用addSubview將「second」視圖添加到現有視圖中:或者將其添加到某種形式的UINavigationController或UITabBarController?當你這樣做時,它會自動增加保留計數,並且釋放視圖的任何代碼都不會被釋放。
在我的AppDelegate應用程序中:didFinishLaunchingWithOptions我有類似的東西;
LoginViewController *login = [[LoginViewController alloc] init];
[login setDelegate:self];
loginNavController = [[UINavigationController alloc]
initWithRootViewController:login];
[window addSubview:[loginNavController view]];
然後一旦登錄已發生(和使用協議/委託發送回的AppDelegate消息成功)我把這種代碼;
UIViewController *newView1 = [[UIViewController alloc] init];
UIViewController *newView2 = [[UIViewController alloc] init];
UIViewController *newView3 = [[UIViewController alloc] init];
myTabBarController = [[UITabBarController alloc] init];
myNavController = [[UINavigationController alloc]
initWithRootViewController:newView1];
// nav controller now retaining
[newView1 release];
NSArray *viewControllers = [NSArray arrayWithObjects:myNavController,
newView2,
newView3,
nil];
[myTabBarController setViewControllers:viewControllers animated:YES];
[[myTabBarController view] setFrame:[[UIScreen mainScreen] applicationFrame]];
[window addSubview:[tabBarController view]];
// tab bar controller now retaining
[newView2 release];
[newView3 release];
// remove login from application
[[loginNavController view] removeFromSuperview];
AppDelegate在頭文件中聲明如下:
LoginViewController *loginViewController;
UITabBarController *myTabBarController;
UINavigationController *myNavController;
在AppDelegate的dealloc方法中,這些被釋放。
這給了我我的登錄頁面,然後當它已經處理我的視圖與頂部導航全部控制使用底部標籤欄。
希望這有助於某種方式。
你在做一些奇怪的視角雜耍,導致視圖不被保留在第一位? – Brian 2011-01-20 21:25:50
當你說「第二視圖」時,你的意思是你展示的UIView或UIViewController? – 2011-01-20 22:06:47