2009-03-27 2 views
8

У меня есть способ спрятать заднюю кнопку, используемую навигационным контроллером. Он установлен предыдущим контроллером, а не управляющим текущим представлением, и это затрудняет переход. Мне нужно было сделать это в режиме редактирования, чтобы я мог помешать пользователю перейти от экрана.Есть ли лучший способ скрыть объект backBarButtonItem?

if(self.editing) { 
    // Get rid of the back button 
    UIView *emptyView = [[UIView alloc] init];; 
    UIBarButtonItem *emptyButton = [[[UIBarButtonItem alloc] initWithCustomView:emptyView] autorelease]; 
    [self.navigationItem setLeftBarButtonItem:emptyButton animated:YES]; 
} else { 
    // Restore the back button 
    [self.navigationItem setLeftBarButtonItem:nil animated:YES];   
} 

Есть ли лучший способ сделать это?

ответ

44

использовать эту функцию, чтобы скрыть кнопку назад

[self.navigationItem setHidesBackButton:YES] 

использовать это, чтобы показать кнопку назад

[self.navigationItem setHidesBackButton:NO] 
+2

Это работает, спасибо. Существует одна небольшая разница - нет анимации. Я решил, что с этими версиями: [self.navigationItem setHidesBackButton: YES animated: YES]; [self.navigationItem setHidesBackButton: NO animated: YES]; –

+0

Обязательно поместите этот код в ViewController, где вы хотите, чтобы кнопка была скрыта - не предыдущий контроллер (который требовался исходный вопрос). –

1

Вот метод я использую в моей точки зрения контроллера, чтобы показать и скрыть кнопку назад при редактировании включена и отключены:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
{ 
    if (editing) { 
     // Disable the back button 
     [self.navigationItem setHidesBackButton:YES animated:YES]; 
    } 
    else { 
     // Enable the back button 
     [self.navigationItem setHidesBackButton:NO animated:YES]; 
    } 

    [super setEditing:editing animated:animated]; 
} 
0

Сделайте выход с сильным (не слабым по умолчанию) b ar от раскадровки до вашего контроллера. Цель состоит в том, чтобы не потерять ссылку, когда вы устанавливаете левую/правую кнопку на нуле.

Смежные вопросы