У меня есть UITabBarController
с 4 UINavigationControllers
.Я реализовал метод делегирования didSelectViewController
следующим образом:
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
if ([viewController isKindOfClass:[UINavigationController class]]) {
[(UINavigationController *)viewController popToRootViewControllerAnimated:NO];
}
}
Сбой, когда NavigationController
находится на 2-м уровне после того, как didSelectRowAtIndexPath
помещает новый viewController в стек.
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Navigation logic may go here. Create and push another view controller.
RootViewController *detailViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
// ...
detailViewController.title = [self.temp objectAtIndex:indexPath.row];
detailViewController.sort = self.title;
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}
Конечно, отладчик с включенным NSZombies
не дает никакой обратной связи.
Однако, если я добавлю сохранение в detailViewController alloc;
RootViewController *detailViewController = [[[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil] retain];
Это работает, но утечкапамять.
Есть идеи, что не так, как исправить, что происходит?