У меня есть контроллер представления 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")
}
Подробнее здесь: https://stackoverflow.com/questions/275 ... -nil-swift
Мобильная версия