【发布时间】:2011-05-03 15:28:54
【问题描述】:
我的应用设置是一个带有三个选项卡的 UITabBar。每个选项卡中都有一个不同的 UINavigationController。
在第一个选项卡中有一个刷新按钮 - 这会加载来自网络 (xml) 的数据。数据显示在三个标签栏中。
每当有人刷新数据时,我如何释放 UINavigationControllers?我想这样做的原因是,当数据更改时,各个选项卡可能会显示全新的数据,因此保留该屏幕会有点危险..如果这有意义的话。所以我想完全刷新 UINavigationControllers 并在他们再次单击选项卡时显示导航堆栈中的第一个视图。
感谢瑞恩的回答。我的做法是这样的
for(UINavigationController *navController in [self.navigationController.tabBarController viewControllers]) {
NSLog(@"popping %@", [navController title]);
[navController popToRootViewControllerAnimated:NO];
if ([[navController title] isEqualToString:@"Tab2"])
{
Tab2RootController *newRoot2 = [[Tab2RootController alloc] initWithNibName:@"Tab2RootController" bundle:nil];
newRoot2.title = @"Tab2";
[navController setViewControllers:[NSArray arrayWithObject:newRoot2] animated:NO];
//need [newRoot2 release]?
}
if ([[navController title] isEqualToString:@"Tab3"])
{
Tab3RootController *newRoot = [[Tab3RootController alloc] initWithNibName:@"Tab3RootController" bundle:nil];
newRoot3.title = @"Tab3";
[navController setViewControllers:[NSArray arrayWithObject:newRoot3] animated:NO];
//need [newRoot3 release]?
}
}
【问题讨论】:
标签: iphone objective-c memory-management ios uinavigationcontroller