繁体   English   中英

放松搜索后,为什么我的导航堆栈混乱了?

[英]Why is my navigation stack mixed up after unwind segue?

我有一条导航路线,如下所示:

在此处输入图片说明

A是嵌入在标签栏控制器中的UITableViewController 轻触其中的一行就可以找到BB是嵌入在导航控制器中的视图控制器。 轻按B上的粉红色按钮可推动视图控制器C ,然后将“最近的歌曲”点按到D 最后,在D上点按一首歌曲即可运行方法uploadSong()

-(void) uploadSong {
    ViewControllerB *viewControllerB = [self.storyboard instantiateViewControllerWithIdentifier:@"viewControllerB"];
    ViewControllerA *viewControllerA = [self.storyboard instantiateViewControllerWithIdentifier:@"viewControllerA"];

    NSArray *vcArray = @[self,viewControllerA,viewControllerB];
    [self.navigationController setViewControllers:vcArray animated:YES];
    [self performSegueWithIdentifier:@"unwindToViewControllerB" sender:self];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if ([segue.identifier isEqualToString:@"unwindToViewControllerB"]){

        ViewControllerB *viewControllerB = segue.destinationViewController;
        viewControllerB.object = self.friendObject;
        viewControllerB.spotifyDismiss = YES;
        viewControllerB.hidesBottomBarWhenPushed = YES;
    }
}

一切顺利,最后我回到了B ,导航控制器的后退按钮使我回到了我想要的A 但是,我发现如果我改为点击选项卡栏项(左下),则会再次显示D ,而不是执行应用程序中常见的操作,然后带您进入堆栈中的第一个视图控制器,在本例中为A

所以我的问题是,为什么在放开序幕之后,我从B后退按钮会将我带到A ,但是点击选项卡栏项会将我带到D而不是A

这似乎是修复被简单地把视图控制器在vcArray在明显正确的顺序[viewControllerA, viewControllerB, self]而不是[self, viewControllerA, viewControllerB] 现在,无论我点击“后退”按钮还是选项卡栏项,导航堆栈的行为都应完全一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM