2015-03-20 4 views
1

У меня есть пользовательский UIToolbar, созданный в Storyboard, содержащий перематывание, паузу и перемотку вперед UIBarButtonItems. Я пытаюсь заменить кнопку паузы кнопкой воспроизведения при нажатии. Мой код выглядит следующим образом:Изменение элементов UIToolbar вызывает пустую панель инструментов

@IBOutlet weak var bottomToolbar: UIToolbar! 

@IBAction func playPause() { 
    var newButton: UIBarButtonItem 
    if !self.timer.valid { 
     let aSelector : Selector = "updateTime" 
     self.timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: aSelector, userInfo: nil, repeats: true) 
     newButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: "playPause") 
    } 
    else { 
     self.timer.invalidate() 
     newButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: "playPause") 
    } 
    var items = self.bottomToolbar.items 
    items?[3] = newButton 
    self.bottomToolbar.setItems(items, animated: true) 
} 

Панель инструментов инициализирована темно-серым фоном с белыми кнопками. Однако, после попытки нажатия кнопки, вся панель инструментов становится белой. Есть идеи?

ОБНОВЛЕНИЕ 1:
Итак, после того, как вы столкнулись с цветами и перешли через код немного больше, я обнаружил, что только кнопка паузы/воспроизведения исчезает в дополнение к панели инструментов, белой. Но даже после исчезновения, щелкнув, где он должен по-прежнему посылать сигнал в ВК. И попытка сброса фона панели инструментов в темно-серый цвет не помогает.

+0

При пошаговом через код, то, что содержимое '' детали до последней строки? Это так, как ожидалось? – Mundi

+0

@Mundi да, насколько я могу судить, массив 'items' содержит все правильные UIBarButtonItems. Всего 7 - гибкое пространство, перемотка назад, гибкое пространство, воспроизведение/пауза, гибкое пространство, быстрая перемотка вперед и гибкое пространство. Элементы перемотки и быстрой перемотки имеют правильные действия и цель, поэтому я предполагаю, что остальная часть массива хороша. – user2624177

+0

Хм, код на панели инструментов выглядит нормально. Вы можете попытаться отправить его 'setNeedsDisplay'. Проблема, скорее всего, будет найдена в другом месте. – Mundi

ответ

2

У меня была аналогичная проблема в последнее время. Что помогло установить toolbar.Items в пустой массив, прежде чем снова установить его на ваши элементы.

Моих быстро очень ограничено, поэтому, пожалуйста, простите ошибки компилятора:

items = self.bottomToolbar.items 
self.bottomToolbar.setItems:([], animated: false) 
items?[3] = newButton 
self.bottomToolbar.setItems(items, animated: true) 
+0

Спасибо за предложение, но это не сработало. Интересно, что установка элементов панели инструментов в пустой массив также приводит к тому, что он пуст. – user2624177