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