2016-01-23 50 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到视图控制器,这样我可以在SettingViewController使用的变量。

我是否是rihgt?

回答

1

一般来说,你是正确的,:传递SettingViewController回其委托使原来调用者不必保持一个参考的创建,并自委托方法一起已经将相关信息发送SettingViewController所示。

但还有更多:在某些代表的情况下,这种风格对于不同的东西是有用的。设想一个由功能func somethingGotClicked(sender:YourSenderType)组成的点击处理程序。如果您的班级创建YourSenderType的多个实例并将它们同时显示为自己的代表,则无法知道如果没有sender参数,则会点击哪个。在一些func somethingGotClicked()你不知道哪个被点击。当显示多个UITableViewUICollectionView时,通常需要该功能是一个单一视图,其中一个实例设置为其代表。

+0

谢谢你我的朋友! – iceChao

相关问题