为什么将 viewController 作为变量传递?
why pass viewController as variable?
首先我不得不说我对 swift 和 Objective C.I 真的很陌生C.I 正在自学。
我对此代码有疑问
我的设置ViewController 中有一个名为"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
}
我想 is:I 将 SettingViewController 中的所有内容都传递给 ViewController 以便我可以使用 SettingViewController.
中的变量的原因
我说的对吗?
通常你是正确的,是的:将 SettingViewController
传递回其委托使原始调用者不必保留对创建和显示的 SettingViewController
因为委托方法已经发送了相关信息。
但还有更多:在某些委托情况下,这种风格对于不同的事情很有用。想象一个由函数 func somethingGotClicked(sender:YourSenderType)
组成的点击处理程序。如果您的 class 创建了 YourSenderType
的多个实例并同时显示它们将自己注册为它们的代表,那么将无法知道 哪个 被点击了没有 sender
参数。在某些 func somethingGotClicked()
中,您将不知道点击了哪个。当显示多个 UITableView
或 UICollectionView
是一个单独的视图并将一个单独的实例设置为它们的委托时,通常需要该功能。
首先我不得不说我对 swift 和 Objective C.I 真的很陌生C.I 正在自学。
我对此代码有疑问
我的设置ViewController 中有一个名为"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
}
我想 is:I 将 SettingViewController 中的所有内容都传递给 ViewController 以便我可以使用 SettingViewController.
中的变量的原因我说的对吗?
通常你是正确的,是的:将 SettingViewController
传递回其委托使原始调用者不必保留对创建和显示的 SettingViewController
因为委托方法已经发送了相关信息。
但还有更多:在某些委托情况下,这种风格对于不同的事情很有用。想象一个由函数 func somethingGotClicked(sender:YourSenderType)
组成的点击处理程序。如果您的 class 创建了 YourSenderType
的多个实例并同时显示它们将自己注册为它们的代表,那么将无法知道 哪个 被点击了没有 sender
参数。在某些 func somethingGotClicked()
中,您将不知道点击了哪个。当显示多个 UITableView
或 UICollectionView
是一个单独的视图并将一个单独的实例设置为它们的委托时,通常需要该功能。