问题描述
|
你好
我正在尝试动态添加和删除选项卡栏元素。有两个数组。首先显示一个带有名称\“ 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);
检查标签