设置uitabviewcontroller viewcontrollers时,有时只能获得EXC_BAD_ACCESS

时间:2014-08-12 22:29:01

标签: ios objective-c uitabbarcontroller

我正在尝试为我的标签视图控制器创建和设置VC。每个VC中都有一个下一个按钮,可以打开下一个选项卡,也可以在到达结尾时加载一组新选项卡。在Type1.mType2.m内部:

- (IBAction)next:(id)sender {
    if (self.tabBarController.selectedIndex < [self.tabBarController.viewControllers count] - 1) {
        self.tabBarController.selectedIndex += 1;
    }
    else {
        // load nextData
        NSLog(@"nextData: %@", nextData);
        if (nextData == nil) {
            // essentially stop the next button from working
            return;
        }
        self.tabBarController.selectedIndex = 0U;
        [self.tabBarController setTitle:[nextData display_name]];
        [self.tabBarController setViewControllers:[nextData loadTabs]];
    }
}

loadTabs是Data类的一个方法(它是一个带有类别的Core Data NSManagedObject子类)。

内部ParentData+Helpers.m看起来像:

- (NSArray *)loadTabs {
    NSMutableArray *mut = [NSMutableArray new]; 
    for (SubData *d in self.datapoints) {
        if ([d.field_x isEqual:@YES]) {
            [mut addType1:d];
        else {
            [mut addType2:d];
    }
    return mut;
}

addType1和addType2在其字段中几乎相同,但具有不同的实现。他们看起来像:

- (TypeVC *)addType1:(SubData *)data {
    TypeVC *vc = [[TypeVC alloc] init];
    vc.datapoint = data;
    return vc;
}

其中TypeVC是Type1或Type2

所以现在我有一个表视图,每个单元格都有一个关联的ParentData,它有一个SubData对象数组。选中后,它会加载带有Type1和Type2 VC的UITabViewController。

TableVC.m内:

- (void)- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        [self performSegueWithIdentifier:@"toTabs" sender:self];
}

其中toTabs导致故事板中的UITabBarController。

在prepareForSegue中:

UITabBarController presentedTabBarController = [segue destinationViewController];
[presentedTabBarController setTitle:self.selectedTitleName];
[presentedTabBarController setViewControllers:[self.selectedParentData loadTabs]];

所以一切正常。

所以我运行我的应用程序,转到UITabBarController,应该有的东西。第一组标签有2个标签,所以我点击下一个,然后转到第二个标签。我点击下一步,然后加载下一组标签并打开正确的标签。我接下来打得很好。每次它正常工作时我会打四到五次。它的Type1或Type2无关紧要。

然后突然间,我找到了一个有2个标签的特定版本。它加载第一个(索引0处的那个),然后我点击下一个。突然,我在行self.tabBarController.selectedIndex += 1;处有EXC_BAD_ACCESS(代码= 1,地址= 0xWHATEVER)。我不明白为什么会这样。

0 个答案:

没有答案