UITabBarController委托方法中应用崩溃

问题描述

| 你好 我正在尝试动态添加删除选项卡栏元素。有两个数组。首先显示一个带有名称\“ More \”的标签栏,当用户按下More时,另一个数组被添加标签栏。用户可以通过按第二个数组中的较少标签栏选项来返回第一个数组。问题是,当我按顺序依次按“越来越多”,“越来越少”,“越来越少”,“越来越多”,“越来越少”选项卡时,应用程序在最后一次“更少”之后崩溃。数组对我来说似乎还可以,标签栏控制器也可以。我无法解决问题。 下面是标签栏委托方法代码
 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
 NSLog(@\"selected view controller is :%@\",viewController);
 if(viewController.view.tag == -1){
     [self.tabBarController setViewControllers:self.level2TabBarItems animated:YES];
     [self.tabBarController setSelectedindex:0];
 }else if(viewController.view.tag == -2){
     [self.tabBarController setViewControllers:self.level1TabBarItems animated:YES];
     [self.tabBarController setSelectedindex:0];
 }
} 谁能告诉我我做错了什么吗? 最好的祝福     

解决方法

        我有类似的问题。我猜想您在数组中构造了VC的新实例,因此频繁切换更多/更少原因会导致从旧实例调用方法(当时尚未替换)。 不幸的是,“ 1”方法(如文档所述)会自动删除调用“ 2”的旧视图控制器,似乎没有其他方法可以重用它们。 在您的情况下,您可以尝试禁用选择选项卡,直到
tabBarController:didSelectViewController:
执行实现为止(我没有对其进行测试):
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    self.selectLock = YES;
    // your code
    self.selectLock = NO;
}

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    return !self.selectLock;
}
    ,        在此处发表评论NSLog。这不是打印此格式的正确格式。     ,        可能是您的阵列为空。尝试设置一个断点,您将找到导致崩溃的行的解决方案。     ,        我认为无论是否满足 只需用这个
NSLog(@\"%d\",viewController.view.tag);
检查标签