获取异常"message sent to deallocated instance"



>我在标签栏项目 2 上有导航控制器。我正在标签栏项目2->导航项目2中进行一些操作。当我单击按钮时,我想转到选项卡栏项目 1,但同时我希望将第二个选项卡中的导航控制器设置为其根视图控制器。我尝试了以下:

            [self.tabBarController setSelectedIndex:0];
            [self.navigationController popToRootViewControllerAnimated:NO];

但是当我从选项卡 1 回到选项卡 2 时.它给了我异常:"消息发送到已解除分配的实例"。 实现这一目标的正确方法是什么?

选择第一个选项卡:

[self.tabBarController setSelectedIndex:0];

要切换选项卡的根视图控制器:

为此,您必须使用委托方法弹出UITabBarBontroller's rootviewcontroller。

AppDelegate

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if (tabBarController.selectedIndex==1) {
//only for tab number 2
    if ([viewController isKindOfClass:[UINavigationController class]]) {
        UINavigationController *navController = (UINavigationController *)viewController ;
        [navController popToRootViewControllerAnimated:NO];
    }
 }
}

P.S. 不要忘记在 AppDelegate.h 中添加UITabBarControllerDelegate

最新更新