gpt4 book ai didi

iphone - 防止标签栏更改特定索引处的标签 - IOS

转载 作者:IT王子 更新时间:2023-10-29 08:11:52 26 4
gpt4 key购买 nike

感谢阅读我的问题。

当用户单击索引为 4 的选项卡时,我试图实现一个弹出菜单。因此,我试图阻止标签栏在按下索引 4 时切换 View Controller 。

这是我的代码:

- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if(viewController == [tabBarController.viewControllers objectAtIndex:4]){
NSLog(@"NO");
return NO;
}else{
NSLog(@"YES");
return YES;
}

}

我已经在 viewDidLoad 中实现了 UITabBarControllerDelegateself.delegate = self; 并且它只工作了一次。

当我单击索引 4 选项卡时,菜单会显示并且选项卡栏不会切换 View (很棒),但是当我再次单击它时,即使我收到日志“NO”, View 也会发生变化.这里可能是什么问题?

感谢您的任何建议!

已解决

感谢 Kasaname 在下面的回答,我通过添加 selectedindex 并将其设置为标志索引 (prevtab) 来解决它。我将 prevtab 更改为最后选择的选项卡的索引,用户选择索引 4 时除外。我的最终代码:

- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if(viewController == [tabBarController.viewControllers objectAtIndex:4]){
self.selectedIndex = prevTab; //only change in this method
return NO;
}else{
return YES;
}

}

最佳答案

这就是您可以停止/防止 Tabbar 项目在点击 Tabbar 项目时切换标签的方法

对于 Swift 3.0

确保您已实现 UITabBarControllerDelegate 并将 UITabbarControllerdelegate 设置为 self

然后在你的 Controller 中覆盖这个委托(delegate)

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {

if viewController == tabBarController.viewControllers?[2] {
return false
} else {
return true
}
}

关于iphone - 防止标签栏更改特定索引处的标签 - IOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16786556/

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