現在テーブルビュー2枚、再生画面1枚で音楽プレイヤーを作成しています。
[アルバム一覧(ViewController.swift)]

[選択されたアルバムの曲一覧(songsViewController.swift)]

[再生画面(playerViewController.swift)]
その他に再生の制御を行うplayerController.swiftがあります。

再生にAVAudioPlayerを使用しており、audioPlayerDidFinishPlayingを検出したら通知を用いて
どの画面にいても再生終了を検出しようとしています。
以下はそれぞれの.swiftに書いたコードです。

【playerController.swift】
ここにAVAudioPlayerも宣言されています。

//再生終了を検出
func audioPlayerDidFinishPlaying(player: AVAudioPlayer!, successfully flag: Bool) {
    println("finish")
    //再生終了を他クラスに通知
    let notification = NSNotification(name: "getStop", object: self)
    NSNotificationCenter.defaultCenter().postNotification(notification)
}

他の三つのViewControllerには通知を検出するコードをviewDidLoad()以下に書いています。
【ViewController.swift、songsViewController.swift、playerViewController.swift】

//再生終了を監視
var nc: NSNotificationCenter?

override func viewDidLoad() {
    super.viewDidLoad()
        nc = NSNotificationCenter.defaultCenter()
        nc?.addObserver(self, selector: "myAction", name: "getStop", object: nil)
}

//再生終了通知を受けた時に起動
@objc func myAction() {
    //再生終了時の処理
    //次の曲へ移動する処理を書いています。
}

これでは画面遷移する度に通知登録されてしまうので、画面移動時に削除しています。

//画面移動時に通知を削除
override func viewDidDisappear(animated: Bool) {
    super.viewDidDisappear(animated)
    nc = NSNotificationCenter.defaultCenter()
    nc?.removeObserver(self)
}

以上のように通知に関するコードを書いたのですが、再生画面にいる時にしか再生終了時の処理が行われません。
正確には「どのページにいても再生終了は検出するが、再生終了時の処理が行われない」となります。
再生終了 -> audioPlayerDidFinishPlayingに書いたprintln("finish")が表示される ->
セレクタである"myAction"の処理内容が実行されない。

どの画面にいても通知を検出するには何が足りないのでしょうか?
アドバイスをお願いいたします。