30. UITableViewDelegate详解
来源:互联网 发布:大时代 知乎 编辑:程序博客网 时间:2024/06/13 06:52
UITableViewDelegate
它用于表现cell的显示和行为,我们查看它的定义:
public protocol UITableViewDelegate : NSObjectProtocol, UIScrollViewDelegate { // 自定义显示 // cell将要显示时回调 @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) // section的header将要显示时回调 @available(iOS 6.0, *) optional public func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) // section的footer将要显示时回调 @available(iOS 6.0, *) optional public func tableView(tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int) // cell已显示时回调 @available(iOS 6.0, *) optional public func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) // section的header已显示时回调 @available(iOS 6.0, *) optional public func tableView(tableView: UITableView, didEndDisplayingHeaderView view: UIView, forSection section: Int) // section的footer已显示时回调 @available(iOS 6.0, *) optional public func tableView(tableView: UITableView, didEndDisplayingFooterView view: UIView, forSection section: Int) // 可变高度的支持 // 返回行高 @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat // 返回section的header的高度 @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat // 返回section的footer的高度 @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat // 使用estimatedHeight方法可以快速计算猜测值,可加快table的加载时间 // 如果下面的这些estimatedHeight方法被实现, 上面的tableView:heightForXXX的调用将被推迟到views可以被展示的时候,所以这里可以放一些相对耗资源的逻辑 // 返回预估的行高 @available(iOS 7.0, *) optional public func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat // 返回预估 section的header 高度 @available(iOS 7.0, *) optional public func tableView(tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat @available(iOS 7.0, *) // 返回预估 section的footer 高度 optional public func tableView(tableView: UITableView, estimatedHeightForFooterInSection section: Int) -> CGFloat // Section的header和footer信息 // 返回自定义的 section的header, 它将调整默认或已经指定的header的高度 @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? // 返回自定义的 section的footer, 它将调整默认或已经指定的footer的高度 @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? // 行右侧的图标被点击的时候的回调 @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, accessoryButtonTappedForRowWithIndexPath indexPath: NSIndexPath) // Selection // -tableView:shouldHighlightRowAtIndexPath: 这个方法将被调用当有行被按下的时候 // 返回false,消息将停止发送而导致当前行在按下的时候不是失去选中时的高亮 // 将要高亮的时候调用 @available(iOS 6.0, *) optional public func tableView(tableView: UITableView, shouldHighlightRowAtIndexPath indexPath: NSIndexPath) -> Bool // 已经高亮的时候调用 @available(iOS 6.0, *) optional public func tableView(tableView: UITableView, didHighlightRowAtIndexPath indexPath: NSIndexPath) // 已经不高亮的时候调用 @available(iOS 6.0, *) optional public func tableView(tableView: UITableView, didUnhighlightRowAtIndexPath indexPath: NSIndexPath) // 在用户改变选中前调用, 返回一个新的indexPath或nil // 将要选中行 @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? // 将要取消选中行 @available(iOS 3.0, *) optional public func tableView(tableView: UITableView, willDeselectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? // 改变选中后调用. // 选中后调用 @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) // 已经取消选中后调用 @available(iOS 3.0, *) optional public func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) // 编辑模式 // 允许给indexPath的cell自定义editingStyle, 如果没有实现下面的方法,那么当editing属性设置为true时,所有的可编辑cell都有UITableViewCellEditingStyleDelete风格 // 指定cell的编辑风格 @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle // 删除时弹出的确认按钮的文字 @available(iOS 3.0, *) optional public func tableView(tableView: UITableView, titleForDeleteConfirmationButtonForRowAtIndexPath indexPath: NSIndexPath) -> String? // 如果返回值为非nil,将取代tableView:titleForDeleteConfirmationButtonForRowAtIndexPath: @available(iOS 8.0, *) optional public func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? // 控制在编辑模式下背景是否缩进. 如果没有实现, 默认是true,它和下面的缩进级别无关, 这个方法只能用于grouped风格的tableView @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, shouldIndentWhileEditingRowAtIndexPath indexPath: NSIndexPath) -> Bool // 当insert/delete/move按钮将要显示的时候回调 @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, willBeginEditingRowAtIndexPath indexPath: NSIndexPath) // 编辑完成后回调 @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, didEndEditingRowAtIndexPath indexPath: NSIndexPath) // 移动和重新排序 // 允许指定行移动到目标行 @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, targetIndexPathForMoveFromRowAtIndexPath sourceIndexPath: NSIndexPath, toProposedIndexPath proposedDestinationIndexPath: NSIndexPath) -> NSIndexPath // Indentation(压痕) // 返回压痕个深度等级 @available(iOS 2.0, *) optional public func tableView(tableView: UITableView, indentationLevelForRowAtIndexPath indexPath: NSIndexPath) -> Int // 使用复制/粘贴功能, 下面的三个方法必须都实现 // 是否将要显示系统菜单(用于复制/粘贴) @available(iOS 5.0, *) optional public func tableView(tableView: UITableView, shouldShowMenuForRowAtIndexPath indexPath: NSIndexPath) -> Bool // 是否确认显示系统菜单 @available(iOS 5.0, *) optional public func tableView(tableView: UITableView, canPerformAction action: Selector, forRowAtIndexPath indexPath: NSIndexPath, withSender sender: AnyObject?) -> Bool // 当用户选择菜单中的某个选项时调用 @available(iOS 5.0, *) optional public func tableView(tableView: UITableView, performAction action: Selector, forRowAtIndexPath indexPath: NSIndexPath, withSender sender: AnyObject?) // 获得焦点 // 返回能否获得焦点 @available(iOS 9.0, *) optional public func tableView(tableView: UITableView, canFocusRowAtIndexPath indexPath: NSIndexPath) -> Bool // 返回是否将要更新焦点 @available(iOS 9.0, *) optional public func tableView(tableView: UITableView, shouldUpdateFocusInContext context: UITableViewFocusUpdateContext) -> Bool // 已经更新焦点时调用 @available(iOS 9.0, *) optional public func tableView(tableView: UITableView, didUpdateFocusInContext context: UITableViewFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) // 返回上一个焦点的indexPath @available(iOS 9.0, *) optional public func indexPathForPreferredFocusedViewInTableView(tableView: UITableView) -> NSIndexPath?}
1 0
- 30. UITableViewDelegate详解
- UITableViewDelegate
- UITableViewDelegate
- 【IOS 开发学习总结-OC-52】UITableViewDelegate详解
- UITableViewDataSource, UITableViewDelegate
- UITableViewDelegate方法
- UITableViewDelegate的代理方法
- iOS UITableViewDelegate UITableViewDataSource 执行顺序
- 怎样创建表格---UITableView UITableViewDataSource UITableViewDelegate
- 怎样创建表格---UITableView UITableViewDataSource UITableViewDelegate .
- UITableViewDataSource和UITableViewDelegate函数(一)
- UItableview以及UItableviewDelegate的简单使用
- UITableViewDataSource 和 UITableViewDelegate协议中常用方法
- UITableView 应用(三)UITableViewDelegate 方法总结
- 如何将UITableViewDelegate和UITableViewDataSource从UITableViewController中分离出来?
- 如何将UITableViewDelegate和UITableViewDataSource从UITableViewController中分离出来?
- 自己遇到UITableViewDelegate没有正常运转的原因
- UITableViewDataSource和UITableViewDelegate内常用的13个方法
- LintCode 138. 子数组之和
- 【微信第三方平台】授权实现及所使用的框架解析
- ArcGIS API for JavaScript开发教程系列(一)之创建地图
- mysql数据库的基本操作语句
- sftp命令
- 30. UITableViewDelegate详解
- iOS开发---判断两个日期的时间差2
- AWS安装rz,sz
- Linux远程
- 深入理解RunLoop
- 用RocketMQ模拟IM的对话及群聊
- FTP与SFTP
- Hadoop-第一个Hadoop程序
- 【游戏客户端开发】Unity3D 学习笔记1——“工具在手,天下我有”