2012-04-02 79 views
1

我相信UIView对象可以将控制委托给iOS编程中的视图。然而,我认为这已经被IBAction处理,该IBAction与对应于UIViewIBOutlet相关联。在我的xib文件中委托给文件所有者意味着什么?

在这种情况下,这是什么意思拖动蓝线从UIView的代表圆我的厦门国际银行(同时按住Ctrl键),以文件的拥有者?

是不是UIView已经委托我的视图控制器通过IBAction?代码似乎工作,如果我没有为我的UIView的代表指定任何东西。

+1

你的意思是'IBAction'而不是'UIAction'? – NSGod 2012-04-02 02:20:03

+1

你的意思是“UIView”的具体子类是什么? 'UIView'没有委托,也没有任何'IBOutlets'或'IBActions'。 – Costique 2012-04-02 04:51:16

回答

2

“是不是UIView已经通过IBAction委托给我的视图控制器代码似乎如果我不工作不要为我的UIView的代表指定任何内容“。

看起来你很难将Target-Action Mechanism的想法与委托相混淆。虽然您可以将目标行为视为涉及“授权”,但它只是在最普通的意义上说,它是处理和实施动作(消息)的目标(通常是控制器)。然而,可可程序员可能会避免使用特定的词 - 委托来解释目标操作机制 - 因为它很容易与实际的Delegation混淆。

当您在控制器对象中“连接”nib文件中的按钮和控件以调用IBAction方法时,这只是工作中的目标操作机制。如您所见,即使您“没有为我的UIView委托人指定任何内容”,代码也能正常工作,因为目标操作不涉及委托(在可可意义上的单词)

委托通常用于如使用子类来实现所需的行为更容易的选择。例如,而不必创建UITableView自己的自定义子类,以拥有它知道你想让它显示什么数据,你可以简单地使用纯UITableView类,设置其delegate在控制器类,并有控制器类实现所需/所需的指定委托方法,利用子类来实现这一目标可能会变得复杂,因为当你继承,你需要有继承链有充分的了解,以及如何所有的超级班都可以工作

1

文件的所有者是如假包换的厦门国际银行正在它从引用类的名称只是一种奇特的方式。当您将委托出口类,这是此行的等效:

[self.myControl setDelegate:self]; 
1

当您将同时从一个IBOutlet或IBAction为以一个UILabel,UIButton的或别的东西按CNTRL,你要绑定的事件或网点控制器。

委托那种必须实现取决于哪个类型的委托它是特定功能的控制器。例如,的UIViewController,它实现了UIViewDelegate协议,可以实现

-(void)viewDidLoad 

的YourApplicationDelegate,它实现UIApplicationDelegate必须实现

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

所以委托只是一组函数限定的行为一个对象,实现它们的类可以改变这种行为。

相关问题