我有一个自定义的navigationController:
#import "customNavigationController.h"
#import "StartViewController.h"
#import "EtapeViewController.h"
@implementation customNavigationController
- (UIViewController *)popViewControllerAnimated:(BOOL)animated
{
// Accueil du guide, on cache le navigationBar
if([self.viewControllers count] == 2){
self.navigationBarHidden = TRUE;
return [super popViewControllerAnimated:animated];
}
// Si on est pas à l'accueil, on fait l'action normal sur le backBarButton
else {
// Si on est dans une étape, le backButton va servir à reculer dans les étapes, et non reculer vers le workflow
NSString *className = NSStringFromClass([[self.viewControllers objectAtIndex:[self.viewControllers count] - 1] class]);
if ([className isEqualToString:@"EtapeViewController"]) {
EtapeViewController *etape = [self.viewControllers objectAtIndex:[self.viewControllers count] - 1];
if (etape.show_previous_button) {
[etape previousEtape:nil];
return FALSE;
}
return [super popViewControllerAnimated:animated];
}
else {
return [super popViewControllerAnimated:animated];
}
}
}
@end
在某些情况下,我想取消backButton的click事件(在显示为“return FALSE”的行上),但它不起作用。
有办法吗?
答案 0 :(得分:1)
代替return FALSE
,你可以这样做:
return nil;
或
return [self topViewController];
要么有正确的副作用。
话虽如此,请注意您的UI设计。确保用户知道后退按钮无法以某种方式工作的原因。
答案 1 :(得分:0)
我不明白为什么你会让Back按钮忽略水龙头?这似乎会让用户感到困惑,App Store团队会认为这是一个错误。也许你可以发布截图吗?
重新设计界面可能会更好,并考虑1)使用工具栏按钮进行导航(如Mobile Safari)或2)完全支持基于UINavigation的视图而不是解决它。
更新:听起来你要执行不同的操作,比如显示确认信息?我不知道任何官方方法可以做你想要的事情,因为UINavigationControllerDelegate方法只是通知你转换,它们不允许你取消/修改它们。 (如果转换是动画的,那么使用导航控制器的视图堆栈可能无济于事。)
所以你总是可以在后面的按钮上漂浮一个透明(或几乎透明)的窗口,然后拦截这种方式。这是一些与状态栏类似的示例栏:
答案 2 :(得分:0)
为什么不在不希望用户点击它的情况下禁用后退按钮?