我有一个嵌入在 UITabBarController 中的 Show segue。当我点击当前选定的选项卡时,我想防止展开转场,除非满足特定条件。我试过使用 shouldPerformSegueWithIdentifier 和 canPerformUnwindSegueAction 但以这种方式展开时似乎都没有被触发。
Best Answer-推荐答案 strong>
不确定标签栏上的 unwind segue 是什么意思,但如果你想阻止标签更改,UITabBarController 上有一个委托(delegate)函数用于此目的。
将协议(protocol)添加到您的标签栏类。
@interface YourTabbarViewController () <UITabBarControllerDelegate>
@end
分配委托(delegate),然后实现该功能。
@implementation YourTabbarViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.delegate = self;
}
- (BOOL)tabBarControllerUITabBarController *)tabBarController shouldSelectViewControllerUIViewController *)viewController {
if (preventTabChange)
return NO;
return YES;
}
更新
好的,假设您已经设置了如图所示的相关部分,并且如果满足某些条件,您希望阻止从 B 到 A 的展开。如上所述我的解决方案将起作用。
当 导航 Controller 即将激活时,您将收到查询/通知,您可以创建自己的子类来保存您需要决定是否应该使用的任何信息允许从 subview Controller 显示或展开。在这种情况下,您的预防措施可能如下所示(扩展上面的 shouldSelectViewController ):
- (BOOL)tabBarControllerUITabBarController *)tabBarController shouldSelectViewControllerUIViewController *)viewController {
if ([viewController isKindOfClass:[YourNavigationController class]]) {
if ([(YourNavigationController *)viewController preventUnwind])
return NO;
}
return YES;
}
请注意,我特意选择 preventUnwind 作为自定义类中的标志来说明要做什么。当您将 移动到 View Controller 时,这将默认为 NO ,因此允许这样做。
不要忘记将 YourTabbarViewController 设置为 Tabbar View Controller 的类,并将 YourNavigationController 设置为 Navigation Controller 在图片中。
关于ios - 如何防止 UITabBar 的 unwind segue?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/50093451/
|