我有一个带有2个UINavigationControllers的UITabBarController设置。
一个UINavigationController有一个UIViewController,另一个UINavigationController有两个UIViewControllers。然后,如果您导航到第二个UIViewController并单击已选中的选项卡,它会将您带到UINavigationController的根目录(这将是第一个UIViewController)。
有没有办法阻止这种情况发生?我不希望用户能够单击已选择的选项卡以转到导航控制器的根目录。
答案 0 :(得分:18)
为此,您需要在app delegate中实现一个函数来获取tabbar委托调用。
在app delegate.m文件中,在didfinishlaunching方法中添加此行
[tabBarController setDelegate:self];
然后实现此方法(也在您的app委托中):
- (BOOL)tabBarController:(UITabBarController *)theTabBarController shouldSelectViewController:(UIViewController *)viewController
{
return (theTabBarController.selectedViewController != viewController);
}
这将作为选项卡委托协议的一部分进行调用,如果选项卡已经选中,则将停止选择选项卡。
希望有所帮助。