Browsers简介
浏览器视图提供了一个用户界面,用于从数据列表或目录路径等分层组织的数据列表中显示和选择项。
本文讨论如何使用浏览器。关于浏览器视图提供关于浏览器的基本信息,并描述了当您选择浏览器项时会发生什么。浏览器界面特性描述了如何控制浏览器外观的某些方面。使用浏览器委托描述如何使用委托来填充浏览器中的数据。
关于浏览器视图
浏览器视图提供了一个用户界面,用于从数据列表或目录路径等分层组织的数据列表中显示和选择项。在处理数据层次结构时,级别显示在列中,列从左到右编号,以0开头。浏览器是由NSBrowser类实现的,它的每个列都包含一个NSScrollView
,其中包含一个填充了NSBrowserCells
的NSMatrix
。NSBrowser
依靠委托在它的NSBrowserCells
中提供数据。
浏览器视图如何工作
NSBrowser
列中的每个条目都是NSBrowser Cell。这个单元格可以是分支单元格(如目录)或叶单元格(如文件)。一个分支cell显示一个图片,表示当该cell被点击时,浏览器视图将会显示一个新的NSBrowserCell
列。为了显示新列,NSBrowser
会自己发送addColumn
消息,addColumn
消息会通知它的委托加载下一列。NSBrowserCell也可以加载或卸载,加载的NSBrowserCells
已经设置好状态,准备好显示了。如果你的代码需要访问一个特定的NSBrowserCell
,可以使用NSBrowser的LoadedCellAtRow:column:
方法。
用户的选择可以表示为字符串,如果选中的是多层的文件(如一个目录中的文件),则选中节点之前的路径用“/”分割。要使用其他字符作为分隔符,调用NSBrowser
的setPathSeparate
方法。
一个浏览器视图可以设置为每列允许选择多个cell或者限制为单选。当设置为单选时,它也可以设置为仅对叶子cell允许多选,或者允许同时选中两个类型的cell。
因为NSBrowser
继承自NSControl
,因此它有一个目标对象和动作消息。每次用户在每列中选择一个或多个cell时,浏览器视图会发送它的动作消息给目标对象。NSBrowser
还添加了当用户双击一个条目时发送的操作,这允许用户在不采取任何操作的情况下选择条目,然后双击调用一些有用的操作,比如打开一个文件。
因为NSBrowserCell
不继承NSActionCell
,它不持有目标和动作值,不能直接参与目标/动作范例。但是,NSBrowser
的动作方法可以使用selectedCell
方法获得最后一个选中的NSBrowserCell
。
浏览器界面特性
NSBrowser
的用户界面特性可以通过多种方式改变。NSBrowser
的水平滚动器可有可无。(相反,NSBrowser
的列总有一个垂直滚动器-内容不多时滚动器可能会看不见)。正常情况下不应该创建一个没有水平滚动器的NSBrowser
,如果那样做的话,必须要保证NSBrowser足够容纳所有的列并能正常显示。一个NSBrowser
的列或许是有边框有标题、有边框无标题或者是无边框无标题。一个列标题或许可以从左边选中的列中得到,或者可以通过NSBrowser
或它的代理直接指定。
图1 介绍一个NSBrowser的示例。
从上图中可以看出用户界面方面的东西:
- 浏览器标题:可以通过在xib中的Title属性设置
NSBrowser
的标题 - 列标题:可以通过NSBrowser的实例方法
setTitle:ofColumn:
改变每列的标题,注意,如果在Interface Builder中设置浏览器的Title属性,它将显示在列0的标题的位置。 - 分支指示器(Branch indicator):这个指示器是根据对应的
NSBrowserCell
对isLeaf消息的响应而显示的,指示符的存在告诉用户,当他们单击单元格时,右侧的列将显示该单元格下分层关联的信息。
使用浏览器委托
NSBrowser需要使用一个代理去提供给他需要展示的数据。该代理负责提供数据,并负责设置每个项目为分支或叶子cell、可用或不可用。它还可以接收事件通知,比如滚动,以及可能已经更改的列的验证请求。
可以执行两个类型的代理中的任何一个:主动或者被动。主动代理创建列的行(即NSBrowserCells
)本身,然而被动式代理把此部分任务交给了NSBrowser。通常,建议使用被动式代理,因为它更方便调用。一个主动式代理必须执行browser:createRowsForColumn:
去创建一个特定列的行。另一方面,被动式代理必须执行browser:numberOfRowsInColumn:
让NSBrowser知道需要创建多少行。以上两个方法是互斥的,只能执行其一,不能同时执行。(NSBrowser确定它拥有哪种类型的委托,委托通过哪种方法响应。)
两种类型的代理在单个cell显示之前均执行browser:willDisplayCell:atRow:column:
方法去设置状态(如设置cell的文字以及是否是分支cell或者叶子cell),(该代理方法无需调用NSBrowserCell的setLoaded:
方法,因为NSBrowser可以自身决定其状态。)主动式代理可以在创建单元格时设置所有单元格的状态,在这种情况下,它不需要实现browser:willDisplayCell:atRow:column:
方法,但是被动式代理必须始终执行该方法。
Browsers简介相关推荐
- web安全简介_Web安全:HTTP简介
web安全简介 by Alex Nadalin 通过亚历克斯·纳达林 Web安全:HTTP简介 (Web Security: an introduction to HTTP) This is part ...
- Zepto.js简介
Zepto.js简介 一.总结 一句话总结: Zepto.js语法和jquery起码百分之90相似,主要做移动端框架,和jquery mobile是一个类型的概念 1.Zepto.js做移动端的特点? ...
- react jquery_2019年React简介(面向仅了解jQuery的人们)
react jquery by Julien Benchetrit 通过朱利安·贝肯特里特 2019年React简介(面向仅了解jQuery的人们) (An Introduction to React ...
- HTML5和Intersection Observer的响应式图像优化简介
by Riccardo Canella 里卡多·卡内拉(Riccardo Canella) HTML5和Intersection Observer的响应式图像优化简介 (An intro to res ...
- How browsers work
原文:http://taligarsiel.com/Projects/howbrowserswork1.htm 简介 浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工作原理,我们将看到,从你在 ...
- selenium简介_什么是Selenium? Selenium简介
selenium简介 什么是Selenium? (What is Selenium?) Selenium is a free Open source functional Testing tool u ...
- Fiddler简介与功能
简介 Fiddler是位于客户端和服务器端之间的代理,也是目前最常用的抓包工具之一 .它能够记录客户端和服务器之间的所有请求,可以针对特定的请求,分析请求数据.设置断点.调试web应用.修改请求的数据 ...
- gss1_GSS简介:网格样式表
gss1 You may have recently heard of Grid Style Sheets (GSS) in the world of HTML and CSS. GSS re-ima ...
- css硬件加速_CSS动画的硬件加速简介
css硬件加速 In the last couple of years we've often heard about hardware acceleration and how it helps t ...
- Gentler编程简介
by Matt Adesanya 马特·阿德桑亚(Matt Adesanya) Gentler编程简介 (A Gentler Introduction to Programming) This wri ...
最新文章
- k8s入门系列之介绍篇
- 家用电器用户行为分析与事件识别_用户行为分析埋点实时数仓实践
- 分享预告:「数据安全问题」+「 股权与期权」
- python的selenium模块博客园_selenium 模块的使用
- Linux 使用root用户登录系统,并查看当前的路径。 查看当前目录下面的所有文件(包括隐藏文件)。 在当前目录下,查看根目录中的目录结构。
- 呐,你要的新年攻略和文章汇总
- java中的容器问题
- android 桌球游戏,安卓上目前最台球游戏《台球帝国》测评
- matlab中测交流电压,间接测量交流电压有效值的方法与应用
- 后场村的加班别有不同
- 图像处理——乘性噪声和加性噪声
- 二进制方式部署k8s集群1.21版本-域名形式
- Oleg Shilo:基于CS-Script的Notepad++的插件_.Net技术
- 华为研发小仙女自述:我和开发的“撕逼”日常
- Microsoft Edge浏览器上不了网,其他浏览器可以
- python爬虫实验总结_python3爬虫总结(共4篇).docx
- 浅谈如何进行网站结构优化
- 虚拟运行ur5时,出现的问题
- 亿美软通 短信接口整合(JAVA)
- Object.keys()、Object.values()、Object.entries()的用法
热门文章
- 利用全加器实现7段数码管_[走近FPGA]之数码管动态显示
- 英语二 - 常用词根二
- 家用计算机初步,职称计算机Internet基础知识:配置家庭局域网
- bat一键清理系统垃圾/系统日志
- 全球与中国抗口腔粘膜炎药物市场深度研究分析报告
- winedt103系统找不到指定文件_latex排版入门(winEdit系统找不到指定文件的解决办法)...
- 边境的悍匪—机器学习实战:第五章 支持向量机
- 学期博客:学习进度条
- 映客卖身、花椒获资、抖音崛起——直播和短视频现状分析
- 艾艾贴常用的数据类型转换