我一直在练习table views
并且知道如何创建它们,但我希望在创建表视图时更好地了解委托和源。
有人可以解释在创建表视图时需要委托和源吗?
你为什么需要它们?
当您将委托和源连接到文件所有者时会发生什么,或者ViewController
为什么需要连接它们?
我想我需要一个关于代表和来源的一般解释,以及当你将它们连接到文件所有者时会发生什么ViewController
?
我一直在练习table views
并且知道如何创建它们,但我希望在创建表视图时更好地了解委托和源。
有人可以解释在创建表视图时需要委托和源吗?
你为什么需要它们?
当您将委托和源连接到文件所有者时会发生什么,或者ViewController
为什么需要连接它们?
我想我需要一个关于代表和来源的一般解释,以及当你将它们连接到文件所有者时会发生什么ViewController
?
委托和数据源允许 tableview 符合MVC 设计模式,这是 Cocoa 和 Cocoa Touch 中重复出现的设计模式。
TableView 本身提供了 [V]iew 部分,delegate 提供了 [C]ontroller 部分,而数据源提供了 [M]odel 部分。
当您在 NIB 文件中连接委托和数据源时,您正在直观地创建此连接;您可以轻松地以编程方式进行操作。
委托:- 委托是一个对象,当该对象遇到程序中的事件时,该对象代表另一个对象或与该对象协作。委托对象通常是响应者对象——即从 AppKit 中的 NSResponder 或 UIKit 中的 UIResponder 继承的对象——响应用户事件。委托是一个对象,它被委托控制该事件的用户界面,或者至少被要求以特定于应用程序的方式解释该事件。
数据源:- 数据源类似于委托,不同之处在于,它不是对用户界面的委托控制,而是对数据的委托控制。数据源是由 NSView 和 UIView 对象(例如表视图和大纲视图)持有的一个出口,它们需要一个源来填充它们的可见数据行。视图的数据源通常是充当其委托的同一个对象,但它可以是任何对象。与委托一样,数据源必须实现一种或多种非正式协议的方法,以向视图提供所需的数据,并且在更高级的实现中,处理用户在此类视图中直接编辑的数据。
UITableViewDataSource协议被一个对象采用,该对象调解应用程序的对象数据模型UITableView
。数据源为表视图对象提供构造和修改表视图所需的信息。
Example:
而data source
类型对象将数据提供给另一个对象。再例如,UITableViewDataSource
protocol
具有诸如cellForRowAtIndexPath
和numberOfRowsInSection
口述应在表格中显示的内容之类的方法
对象的UITableViewDelegateUITableView
必须采用协议UITableViewDelegate
。协议的可选方法允许代理管理选择、配置部分标题和页脚、帮助删除和重新排序单元格以及执行其他操作。
Example :
一个delegate
类型对象响应另一个对象采取的动作。例如,它们UITableViewDelegate
protocol
具有诸如didSelectRowAtIndexPath
在用户选择 中的特定行时执行动作的方法table
。
如果您愿意编写以下代码,则无需进行任何连接:
tableview.delegate=self;
tableview.dataSource=self;
如果您的编程语言不支持多重继承,则必须使用委托方法。实现委托方法时,可以使用超类等对象函数。例子 :
// define tableview row count
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 1;
}
// define tableview height
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
}
// define specific tableview cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = MyCell();
return cell;
}