2016-04-26 2 views
-3

Я пытаюсь реализовать кнопки воспроизведения/паузы и остановки на панели инструментов для простого приложения секундомера. См. Код на http://swiftstub.com/722226472. Я испытываю странное поведение: сначала кнопка воспроизведения ничего не делает. Если я нажимаю кнопку остановки, значок исчезает, а затем воспроизведение/пауза переключается и работает правильно. Предложения? Я использую последний быстрый и XcodeДругая, но конкретная проблема с воспроизведением/паузой

+0

Вы можете сравнить свой код с другими, опубликованными в таких блогах, как Ray, а не спрашивать здесь. –

+1

Пожалуйста, не связывайтесь снаружи с кодом - эти сайты, как правило, уходят - поставьте соответствующий код в вопрос. –

ответ

0

цель должна быть самостоятельным (не ноль) в обеих этих линиях:

var playButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: nil, action: Selector("playButtonPressed")) 

var pauseButton = UIBarButtonItem(barButtonSystemItem: 
    UIBarButtonSystemItem.Pause, target: nil, action: Selector("pauseButtonPressed")) 

EDIT (на основе комментариев), и вы должны переместить эти строки к инициализации(), потому что вы не можете инициализировать использование self в var, инициализированном таким образом.

var playButton: UIBarButtonItem! 
var pauseButton: UIBarButtonItem! 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    playButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: Selector("playButtonPressed")) 
    pauseButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: Selector("pauseButtonPressed")) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    let toolBarItems = [playButton] 
    toolbar.setItems(toolBarItems, animated: false) 
} 

Поскольку вы никогда в них добавлены, чтобы начать с того, я подозреваю, вы просто другую кнопку в раскадровку, не зацепили ни к чему. Затем вы заменяете их при первом вызове, чтобы остановить.

+0

У меня есть только две кнопки для бара: игра и остановка. Если я заменил nil на self в target, я получаю: (!) 'Невозможно преобразовать значение типа 'NSObject ->() -> ViewController' в ожидаемый тип аргумента 'AnyObject?' ' –

+0

Я добавил дополнительную информацию - переместите var инициализация init(), чтобы вы могли получить доступ к себе. –

+0

Спасибо, Лу. Я попытался переместить их в init(), но не мог понять, как это сделать правильно. - Извини, я только на третий день обучения Свифта. –

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