gpt4 book ai didi

ios - 如何防止从 UITabBar 展开 segue?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:21:10 25 4
gpt4 key购买 nike

我有一个嵌入在 UITabBarController 中的 Show segue。除非满足特定条件,否则我想在点击当前选定的选项卡时防止展开 segue。我试过使用 shouldPerformSegueWithIdentifiercanPerformUnwindSegueAction 但在以这种方式展开时似乎都没有被触发。

最佳答案

不确定标签栏上的 unwind segue 是什么意思,但如果您想阻止标签更改,UITabBarController 上有一个用于该目的的委托(delegate)函数。

将协议(protocol)添加到您的标签栏类。

@interface YourTabbarViewController () <UITabBarControllerDelegate>

@end

分配委托(delegate),然后实现函数。

@implementation YourTabbarViewController

- (void)viewDidLoad {
[super viewDidLoad];

self.delegate = self;
}

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {

if (preventTabChange)
return NO;

return YES;
}

更新

OK,假设你已经设置了如图所示的相关部分,并且你希望在满足某些条件时阻止从 B 到 A 的展开。如上所述,我的解决方案将起作用。

enter image description here

只要 Navigation Controller 即将激活,您就会收到查询/通知,因此您可以创建自己的子类来保存您需要的任何信息,以决定它是否应该被激活允许从 subview Controller 显示或展开。在那种情况下,您的预防措施可能如下所示(扩展上面的 shouldSelectViewController):

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)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 展开 segue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50093451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com