将弹出窗口移除到选项卡栏控制器中的视图控制器

时间:2013-11-21 11:52:55

标签: ios uitabbarcontroller xib

我的应用程序它嵌入在标签栏控制器中,但我正在使用一个笔尖,我正在做一些操作。 在此操作结束时,我将弹出到我的标签栏控制器中的视图控制器。我尝试使用此代码(由其他用户在此处建议):

[self.tabBarController setSelectedIndex:<#(NSUInteger)#>];
[self.navigationController popToRootViewControllerAnimated:NO];

但它没有做任何事情。我猜我应该使用这个说明:

[self dismissViewControllerAnimated:NO completion:nil];

但我要在completion中放一些东西,我不知道该怎么做,你能帮助我吗?

更新 我将向您展示我的故事板,以便您了解我想要解释的内容:

enter image description here

也在“产品视图控制器”中,当我按下一个按钮(我按代码设计按钮)时,它会显示我的文件XIB:

enter image description here

在此视图中有一个按钮(通常是隐藏的),当我按下此按钮时,它会将我正在寻找的产品添加到远程购物车中。将此产品添加到远程购物车后,我将弹出“Carriage View Controller”。当我弹出“Carriage View Controller”时,我应该将它们的一些数据传递给我们。 所以我的应用程序有这个标签视图:

  • 主视图控制器:应用程序启动时加载的主视图控制器
  • 类别视图控制器:它是一个表格视图控制器,我在其中显示商店中的产品类别
  • 托架视图控制器:我将在其中显示购物车数据的控制器
  • 信息视图控制器:我在其中显示有关应用程序的信息的控制器

从带有segue的“类别视图控制器”中弹出一个视图控制器,我在其中通过自定义视图显示产品。当我按下其中一个产品时,它会调用我在文件之前发布的xib文件,其中包含之前选择的产品的详细信息。 我希望你能更好地理解我正在做的事情。

CODE:

这是显示我发布的xib的代码:

- (void)collectionView:(PSCollectionView *)collectionView didSelectCell:(PSCollectionViewCell *)cell atIndex:(NSInteger)index {
    int productID = (int)index;
    productID = productID + 1;
    if (IS_IPHONE_5) {
        ProductScannedViewController *productScannedVC = [[ProductScannedViewController alloc]initWithNibName:@"ProductScannedViewControllerRetina4" bundle:nil];
        productScannedVC.idProductScanned = [NSString stringWithFormat:@"%d", productID];
        [productScannedVC setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
        [self presentViewController:productScannedVC animated:YES completion:nil];
    } else {
        ProductScannedViewController *productScannedVC = [[ProductScannedViewController alloc]initWithNibName:@"ProductScannedViewController" bundle:nil];
        productScannedVC.idProductScanned = [NSString stringWithFormat:@"%d", productID];
        [productScannedVC setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
        [self presentViewController:productScannedVC animated:YES completion:nil];
    }
}

1 个答案:

答案 0 :(得分:0)

[self dismissViewControllerAnimated:YES completion:^{
       // completion code here
}];

如果视图控制器是导航控制器导航堆栈的一部分,则只能使用popToRootViewControllerAnimated方法。

如果您正在呈现像这样的视图控制器

TestViewController * vc = [[TestViewController alloc] init];
[self presentViewController:vc animated:YES completion:^{        
}];

想要在里面做标签导航我建议将标签栏注入弱属性

TestViewController * vc = [[TestViewController alloc] init];
[vc setTabController:self.tabBarController];
[self presentViewController:vc animated:YES completion:^{
}];

在要进行导航的TestViewController中:

[self dismissViewControllerAnimated:YES completion:^{
     [tabController setSelectedIndex:0];
}];

我测试了这段代码。