Pap*_*ick 19 iphone objective-c uitabbarcontroller uitabbaritem ios
感谢您阅读我的问题.
当用户单击索引为4的选项卡时,我正在尝试实现一个弹出菜单.所以我试图阻止tabbar在按下索引4时切换viewcontroller.
这是我的代码:
- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if(viewController == [tabBarController.viewControllers objectAtIndex:4]){
NSLog(@"NO");
return NO;
}else{
NSLog(@"YES");
return YES;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经实现了UITabBarControllerDelegate
,并self.delegate = self;
在viewDidLoad
和它的作品只是一个时间.
当我单击索引4选项卡时,菜单显示并且tabbar没有切换视图(GREAT),但是当我再次单击它时,即使我得到Log"NO",视图也会改变.这可能是什么问题?
谢谢你的任何建议!
解决了
感谢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;
}
}
Run Code Online (Sandbox Code Playgroud)
Val*_*riy 10
这是您可以停止/阻止Tabbar项目在tabbar项目单击上切换选项卡的方法
对于Swift 3.0
确保已实现UITabBarControllerDelegate并将UITabbarController的委托设置为self
然后在控制器中覆盖此委托
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if viewController == tabBarController.viewControllers?[2] {
return false
} else {
return true
}
}
Run Code Online (Sandbox Code Playgroud)
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
if (tabBarController.selectedIndex == 0) {
} else if (tabBarController.selectedIndex == 1) {
} else if (tabBarController.selectedIndex == 2) {
}
}
Run Code Online (Sandbox Code Playgroud)
你为什么不使用这个代表,我想这个代表可以用
归档时间: |
|
查看次数: |
10232 次 |
最近记录: |