2016-01-23 4 views
-1

Прежде всего, я должен сказать, что я действительно новичок в быстрой и объективной C. Я изучаю их сам.Зачем пропускать viewController как переменную?

У меня есть вопрос для этого кода

У меня есть делегат в моем SettingViewController под названием «settingsViewControllerFinished» и передать весь контроллер в качестве переменной. код так:

в моем SettingViewController.swift

protocol SettingViewControllerDelegate: class { 
func settingsViewControllerFinished(settingsViewController: SettingsViewController) 

}

@IBAction func close(sender: AnyObject) { 
dismissViewControllerAnimated(true, completion: nil) 
self.delegate?.settingsViewControllerFinished(self) 

}

Я confused.What ты имел в виду, если вы пройдете весь контроллер в качестве переменная? (может быть, вопрос глупо для вас)


в моем ViewController:

func settingsViewControllerFinished(settingsViewController: SettingsViewController) 
{ 
    self.brushWidth = settingsViewController.brush 
    self.opacity = settingsViewController.opacity 
    self.red = settingsViewController.red 
    self.green = settingsViewController.green 
    self.blue = settingsViewController.blue 
} 

Я думаю, причина: я передаю все в SettingViewController к ViewController, так что я мог бы использовать переменные в SettingViewController.

Am I rihgt?

ответ

1

Вообще вы правы, да: передавая SettingViewController обратно в делегатом позволяет первоначальный вызывающий абонент не должен хранить ссылку на созданный и показанный SettingViewController поскольку метод делегата передает соответствующую информацию по уже.

Но есть еще: В некоторых случаях делегатов этот стиль полезен для чего-то другого. Представьте себе обработчик кликов, состоящий из функции func somethingGotClicked(sender:YourSenderType). Если ваш класс создает несколько экземпляров и отображает их в то же самое время, регистрируя себя как их делегат, не было бы способа узнать , который получил один щелчок, если не было параметра sender. В некотором func somethingGotClicked() вы не знаете, какой из них щелкнул. Эта возможность часто необходима при отображении нескольких UITableView или UICollectionView - это один вид с одним экземпляром, установленным в качестве своего делегата.

+0

спасибо, мой друг! – iceChao

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