目前,当用户点击正在使用的选项卡时,应用程序会移动到该选项卡的第一页。
我想禁用用户当前工作的选项卡上的点击事件。
有什么提示吗?
目前,当用户点击正在使用的选项卡时,应用程序会移动到该选项卡的第一页。
我想禁用用户当前工作的选项卡上的点击事件。
有什么提示吗?
你尝试过使用 tabBarController:shouldSelectViewController:
委托方法了吗?希望能对你有所帮助。
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
id currentViewController = tabBarController.selectedViewController;
return (viewController != currentViewController);
}
如果选项卡控制器(tab bar controller)的所有视图控制器都是 UINavigationController
,则应该按照以下方式处理。
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
id nextVC = [(UINavigationController *)viewController topViewController];
id currentVC = [(UINavigationController *)tabBarController.selectedViewController topViewController];
return (nextVC != currentVC);
}
对于Swift 4,委托方法如下:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
return viewController != tabBarController.selectedViewController
}
使用以下方式,它将正常工作
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if(self.tabBarController.selectedIndex==[[self.tabBarController viewControllers] indexOfObject:viewController])
return NO;
else
return YES;
}
UINavigationControllers
。为什么要进行(UINavigationController *)
类型转换?是为了好的编程习惯吗?其实不进行类型转换也可以正常工作。 - viral