Привет У меня есть 2 классов:Swift делегация без раскадровки
первый класс является отправитель, который наследует от UIViewController:
class Sender: UIViewController {
// ReceiverDelegate property for communicating with viewmodel //
var delegate: ReceiverDelegate?
// loginButtonClicked - IBAction called after login button clicked //
@IBAction func loginButtonClicked(sender: AnyObject) {
delegate?.didPressLoginWithCredentials("xx", password: "ss")
}
override func viewDidLoad() {
super.viewDidLoad()
Receiver(vc: self)
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
второго класса только приемник класса, как модель и ее не является UIViewController:
protocol ReceiverDelegate {
func didPressLoginWithCredentials(username: String, password: String)
}
class Receiver: ReceiverDelegate {
init(vc: Sender) {
vc.delegate = self
}
func didPressLoginWithCredentials(username: String, password: String) {
println("THE MESSAGE")
}
}
Я хотел спросить, хорошо ли это oach для назначения делегата. Мне нужно как-то сделать это в моем отправителе, потому что приемник никогда не будет инициализирован?
Я назначил своего делегата в viewDidLoad отправителя.
Если есть лучший подход, пожалуйста, помогите! (Возможно, я должен просто делать что-то вроде вар приемник = приемник(), а затем просто вызывать методы приемника без делегирования?)