Я получаю ноль, когда пытаюсь установить делегат, и не могу понять, почему делегат неправильно настроен.iOS Delegate не устанавливается и возвращает nil (Swift)
У меня есть контроллер просмотра ListViewController
, который я добавляю в подкатегорию, musicPlayer
. musicPlayer
- это UIView, у которого есть некоторые кнопки, которые должны активировать действия в ListViewController
при нажатии.
musicPlayer
устанавливается следующим образом:
protocol MusicPlayerControlsDelegate {
func playPauseClicked()
}
class musicPlayer: UIView {
var myDelegate: MusicPlayerControlsDelegate?
//this should trigger function in delegate
@IBAction func playOrPause(sender: AnyObject) {
println(myDelegate?)
myDelegate?.playPauseClicked()
}
ListViewController
устанавливается следующим образом:
class ListViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, MusicPlayerControlsDelegate {
var musicControls:musicPlayer = musicPlayer()
override func viewDidLoad() {
musicControls.myDelegate = self
}
//adds musicPlayer nib as a subview to ListViewController
@IBAction func playInApp(sender: AnyObject) {
let bundle = NSBundle(forClass: musicPlayer.self)
var playerSubview = bundle.loadNibNamed("musicPlayerSubview", owner: nil, options: nil)[0] as UIView
playerSubview.frame = CGRectMake(0, self.view.frame.width + 79, self.view.frame.width, 200)
self.view.addSubview(playerSubview)
}
func playPauseClicked() {
println("Your delegate is working")
}
Когда я запускаю это, println(myDelegate)
является nil
и println("Your delegate is working")
никогда не вызывается. Любые предложения по устранению этого?
совершенным - спасибо! – patkil