Использование «hidesBackButton = YES» на самом деле не элегантное решение, потому что оно скрывает кнопку, а это не то, что нам нужно. Приемлемым обходным решением будет добавление UILabel в окно над кнопкой «Назад», по крайней мере, отключение касаний кнопки.
Добавьте этот метод в свой класс AppDelegate:
- (void) disableLeftBarButtonItemOnNavbar:(BOOL)disable
{
static UILabel *l = nil;
if (disable) {
if (l != nil)
return;
l = [[UILabel alloc] initWithFrame:CGRectMake(0, 20, 160, 44)];
l.backgroundColor = [UIColor clearColor];
l.userInteractionEnabled = YES;
[self.window addSubview:l];
}
else {
if (l == nil)
return;
[l removeFromSuperview];
[l release];
l = nil;
}
}
Вы можете вызвать это так с любого контроллера представления, чтобы отключить:
MyAppDelegate *appDeleg = (MyAppDelegate *) [[UIApplication sharedApplication] delegate];
[appDeleg disableLeftBarButtonItemOnNavbar:YES];
Для включения:
MyAppDelegate *appDeleg = (MyAppDelegate *) [[UIApplication sharedApplication] delegate];
[appDeleg disableLeftBarButtonItemOnNavbar:NO];