双击UITabBarController的选项卡返回导航控制器的根视图。

8

我有一个包含两个 UINavigationControllers 的 UITabBarController 设置。

其中一个 UINavigationController 包含一个 UIViewController,另一个 UINavigationController 包含两个 UIViewControllers。如果你导航到第二个 UIViewController 并点击已经被选中的 Tab,则会带您到 UINavigationController 的根视图控制器(这将是第一个 UIViewController)。

是否有方法可以阻止这种情况发生?我不希望用户能够点击已经选定的 Tab 去到导航控制器的根视图。

1个回答

22
为了实现这一功能,您需要在应用程序委托中实现一个函数来接收选项卡委托调用。
在您的应用程序委托.m文件中,didfinishlaunching方法中添加此行代码。
[tabBarController setDelegate:self];

然后在您的应用程序委托中实现此方法:

- (BOOL)tabBarController:(UITabBarController *)theTabBarController shouldSelectViewController:(UIViewController *)viewController
{
  return (theTabBarController.selectedViewController != viewController);
}

如果已经选择了某个选项卡,作为选项卡委托协议的一部分,此方法将停止该选项卡的选择。

希望这可以帮助到您。


这个方法可行,但我的TabBarController是另一个ViewController的一部分。因此,我将代理设置在适当的ViewController中,而不是在App delegate中。谢谢! - Mausimo
1
不要将这个放在应用程序委托中,而是创建TabBarViewController的子类,并将子类委托设置为self.delegate = self。然后在故事板中选择我的tabbarviewcontroller的子类。 - Nearpoint

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接