iPhone:当用户按下已选择的选项卡时,如何使UINavViewController不弹出视图控制器
我有一个选项卡栏,每个选项卡的视图控制器都是导航控制器。如果按下已选择的选项卡,则会弹出视图控制器。作为标签之一,我不希望这种情况发生。我代表什么?我试着超越iPhone:当用户按下已选择的选项卡时,如何使UINavViewController不弹出视图控制器,iphone,Iphone,我有一个选项卡栏,每个选项卡的视图控制器都是导航控制器。如果按下已选择的选项卡,则会弹出视图控制器。作为标签之一,我不希望这种情况发生。我代表什么?我试着超越 -(UIViewController *)popViewControllerAnimated:(BOOL)animated 在导航控制器中返回0,但这并不能阻止它弹出 您可以通过将UITabBarController子类化,并将其自身设置为UITabBarControllerDelegate来实现这一点 实现tabBarControll
-(UIViewController *)popViewControllerAnimated:(BOOL)animated
在导航控制器中返回0,但这并不能阻止它弹出 您可以通过将
UITabBarController
子类化,并将其自身设置为UITabBarControllerDelegate
来实现这一点
实现tabBarController:shouldSelectViewController:
,测试它是否正在选择您关心的视图控制器,以及是否已经选择了该视图控制器<代码>如果满足上述条件,则返回nil
如果您愿意,我可以编写一些实际的代码,但这应该会让您走上正确的方向。user74574很接近,但您不应该返回nil,您应该返回NO。是的,从技术上讲,它们在位方面是相同的,位类型有意义,忽略这一点(取决于情况)导致可通过静态分析检测到的警告和/或错误。您希望在委托中实现的功能应该如下所示:
- (BOOL)tabBarController:(UITabBarController *)tabBarController_ shouldSelectViewController:(UIViewController *)viewController {
if (viewController == tabBarController_.selectedViewController) {
return NO;
} else {
return YES;
}
}
你不需要为任何东西建立子类来完成这个任务。只需设置标准
UITabBarController
的委托即可。