Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 标签栏应用程序。是否可以在不同的导航控制器中推/弹出视图控制器?_Ios_Cocoa Touch_Uinavigationcontroller_Uitabbarcontroller - Fatal编程技术网

Ios 标签栏应用程序。是否可以在不同的导航控制器中推/弹出视图控制器?

Ios 标签栏应用程序。是否可以在不同的导航控制器中推/弹出视图控制器?,ios,cocoa-touch,uinavigationcontroller,uitabbarcontroller,Ios,Cocoa Touch,Uinavigationcontroller,Uitabbarcontroller,我正在努力实现以下目标: 让我们想象一下,我们在一个导航控制器中,按下了一个ViewController。用户点击选项卡栏的其他项。在我们移动到另一个视图控制器之前,我想弹出(动画化)推送的视图控制器,但我希望新的视图控制器作为根,以便在推送的视图控制器消失时显示它 这很难解释,我只是希望新的视图控制器出现时,推动的一个正在消失,由于动画的popToRootViewController,而不是旧的出现,然后只是移动到新的一个 假设我们在选项卡栏中的选项b中,该选项对应于视图控制器b,并按下了一个

我正在努力实现以下目标:

让我们想象一下,我们在一个导航控制器中,按下了一个ViewController。用户点击选项卡栏的其他项。在我们移动到另一个视图控制器之前,我想弹出(动画化)推送的视图控制器,但我希望新的视图控制器作为根,以便在推送的视图控制器消失时显示它

这很难解释,我只是希望新的视图控制器出现时,推动的一个正在消失,由于动画的popToRootViewController,而不是旧的出现,然后只是移动到新的一个

假设我们在选项卡栏中的选项b中,该选项对应于视图控制器b,并按下了一个C视图控制器

A

B->C

用户按下一个按钮

我希望这一切发生

A->C

B->C

然后选择一个viewController,然后弹出两个C,在A案例中设置动画,在B案例中未设置动画

这是我的代码:

    [(UINavigationController *)self.tabBar.selectedViewController popToRootViewControllerAnimated:NO];
     UIViewController * viewControllerToPush = self.tabBar.selectedViewController;

    self.tabBar.selectedIndex = indexPath.row;

    [(UINavigationController *)self.tabBar.selectedViewController pushViewController:viewControllerToPush animated:NO];
    [(UINavigationController *)self.tabBar.selectedViewController popToRootViewControllerAnimated:YES];
但它不工作,我得到'推导航控制器不受支持'


是否可以将ViewController从一个导航控制器移动到另一个导航控制器?有什么想法吗

看看
UINavigationControllerDelegate
uitabarcontrollerdelegate
方法。 当按下/弹出控制器或选择选项卡时,它们将允许您执行某些操作:

UINavigationControllerDelegate

– navigationController:willShowViewController:animated:
– navigationController:didShowViewController:animated:
– tabBarController:shouldSelectViewController:
– tabBarController:didSelectViewController:
– tabBarController:willBeginCustomizingViewControllers:
– tabBarController:willEndCustomizingViewControllers:changed:
– tabBarController:didEndCustomizingViewControllers:changed:
UITABBARCONTROLLEDELEGATE

– navigationController:willShowViewController:animated:
– navigationController:didShowViewController:animated:
– tabBarController:shouldSelectViewController:
– tabBarController:didSelectViewController:
– tabBarController:willBeginCustomizingViewControllers:
– tabBarController:willEndCustomizingViewControllers:changed:
– tabBarController:didEndCustomizingViewControllers:changed:

我认为这是非常糟糕的UI设计,苹果会反对,你会违反苹果的人机界面准则(HIG)。我认为你的应用程序的行为会与你的用户预期的不同

Tabbar控制器单个选项卡用于应用程序的离散/不同区域,而不是在应用程序的单个区域移动。希望这是有道理的

我建议您最好使用一个navigationController,底部有一个工具栏来代替tabBar,然后在一个导航堆栈中按下pop