我希望禁用按下我的标签栏并返回导航层次结构中的根视图的功能,同时还为导航栏中的按钮保留此功能。
因此,我希望用户返回根视图的唯一方法是按导航栏中的按钮而不是点击标签栏按钮。
我已经浏览了一下并尝试了几种解决方案,但似乎都没有,因为它们会禁用导航栏按钮和标签栏按钮的功能,而不仅仅是标签栏按钮。
谢谢!
答案 0 :(得分:4)
可能的方法是创建UITabBarController
的子类并实现UITabBarControllerDelegate
协议。
然后你可以实现
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
并在再次选择特定的viewController时返回NO
。
一种方法是保存最近选择的项目并将其与当前选择的项目进行比较。
答案 1 :(得分:0)
周末请关注此问题。在appDelegate didfinishlaunching()方法期间,我一直发现自定义TabBarController为零。
解决方法是将自定义TabBarController设置为UITabBarControllerDelegate,然后在自定义TabBarController类内实现以下委托方法:
// Stops View Controllers from being dismissed when a tab is selected on the UITabBarController
public func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
return viewController != tabBarController.selectedViewController
}