首先,我要说的是我对快速和目标C的新手。我正在自己学习。
我对此代码有疑问
我在我的SettingViewController中有一个名为" settingsViewControllerFinished"它将整个控制器作为变量传递。 像这样的代码:
在我的SettingViewController.swift
中protocol SettingViewControllerDelegate: class {
func settingsViewControllerFinished(settingsViewController: SettingsViewController)
}
@IBAction func close(sender: AnyObject) {
dismissViewControllerAnimated(true, completion: nil)
self.delegate?.settingsViewControllerFinished(self)
}
我很困惑。如果你将整个控制器作为变量传递,你的意思是什么?(也许问题对你来说很愚蠢)
在我的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中的变量。
我好吗?
答案 0 :(得分:1)
通常你是对的,是:将SettingViewController
传递回其委托,使原始调用者无需保留对已创建和显示的SettingViewController
的引用委托方法已经发送相关信息。
但还有更多:在某些代理情况下,这种风格对于不同的东西很有用。想象一下由函数func somethingGotClicked(sender:YourSenderType)
组成的点击处理程序。如果您的类创建了YourSenderType
的多个实例,并在将自己注册为其委托的同时显示它们,那么如果没有{{1}则无法知道哪个被点击了参数。在某些sender
中,您不会知道哪个被点击了。当显示多个func somethingGotClicked()
或UITableView
是一个单一视图并将一个实例设置为其委托时,通常需要使用该功能。