2015-05-18 2 views
1

У меня есть эти два метода:Скрыть и показать кнопку назад в Панель навигации

func showSpinner() 
{ 
    let spinner = UIActivityIndicatorView(activityIndicatorStyle: .White) 
    spinner.startAnimating() 

    self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: spinner) 
    self.navigationItem.hidesBackButton = true 
} 

func hideSpinner() 
{ 
    self.navigationItem.leftBarButtonItem = nil 
    self.navigationItem.hidesBackButton = false 
} 

В viewDidLoad я называю showSpinner, а затем после загрузки данных я называю hideSpinner. Но backButton часто прыгает на hideSpinner. Как это исправить?

enter image description here

+0

вы можете использовать этот метод '- (Недействительными) setHidesBackButton: (BOOL) hidesBackButton анимированный: (BOOL) анимационный,' чтобы показать кнопку назад с помощью анимации –

+0

Уже попробовал то же самое результат. – ChikabuZ

+1

Вы пытались показать заднюю кнопку с некоторой задержкой, как 0,2 или в соответствии с требованием как this- 'Func hideSpinner() { self.navigationItem.leftBarButtonItem = ноль dispatch_after (1, dispatch_get_main_queue()) {() - > Пустота в self.navigationItem.hidesBackButton = false }; } ' –

ответ

4

Вы можете использовать задержку, чтобы показать кнопку назад после удаления вертушку. Как 0,2 секунды или в соответствии с требованием

func hideSpinner() 
{ 
    self.navigationItem.leftBarButtonItem = nil 
    dispatch_after(1, dispatch_get_main_queue()) {() -> Void in 
     self.navigationItem.hidesBackButton = false 
    }; 
} 
Смежные вопросы