2015-05-19 2 views
1

Как только файл играла, сбои приложений и я получаю эту ошибку:Моего приложение падает, когда файл играло (Swift)

-[fefef.ViewController lavEnFunktionDerSkifterTitle(sender as! UIButton)]: unrecognized selector sent to instance 0x7f9883785f40

Как я могу решить эту проблему?

Вот мой код:

@IBAction func play(sender: AnyObject) { 

    musikAfspiller("wwww.myurl.com") 
    lavEnFunktionDerSkifterTitle(sender as! UIButton) 
} 

func musikAfspiller (url: String) { 

    let playerItem = AVPlayerItem(URL:NSURL(string:url)) 

    player = AVPlayer(playerItem:playerItem) 

    player.play() 

    NSNotificationCenter.defaultCenter().addObserver(self, selector:"lavEnFunktionDerSkifterTitle()",name: AVPlayerItemDidPlayToEndTimeNotification, object: playerItem) 
} 

func lavEnFunktionDerSkifterTitle(sender: UIButton) { 

    if counter == 1 { 

     counter = 2 

     sender.setTitle("Stop", forState: UIControlState.Normal) 

    } else { 

     counter = 1 
     sender.setTitle("Play", forState: UIControlState.Normal) 

    } 
} 
+0

А вы используя симулятор iOS? или на самом iPhone? если на iOS-симуляторе вы используете его на Mac Mini? –

+0

define: NSNotificationCenter.defaultCenter(). AddObserver (self, selector: "lavEnFunktionDerSkifterTitle:", имя: AVPlayerItemDidPlayToEndTimeNotification, object: playerItem) –

+0

Я использую оба симулятора на macbook pro и iPhone. Приложение по-прежнему падает. . –

ответ

1

Декларация селектора не должен иметь круглые скобки при отправке использования уведомления это:

NSNotificationCenter.defaultCenter().addObserver(self, selector:"lavEnFunktionDerSkifterTitle",name: AVPlayerItemDidPlayToEndTimeNotification, object: playerItem) 

Также signeture функции получения уведомления должен выглядеть например:

func lavEnFunktionDerSkifterTitle(notification: NSNotification) 

Подробнее о NSNotification c найти here

2

синтаксис для объявления наблюдателя должно быть:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "lavEnFunktionDerSkifterTitle:", name: AVPlayerItemDidPlayToEndTimeNotification, object: playerItem) 

и функция Принимающий должен быть вне функции viewDidLoad() в синтаксисе:

func lavEnFunktionDerSkifterTitle(notification: NSNotification) {}

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