MacOS-NSTableView中常用的属性和方法

  • 因为NSTableView在开发中比较常用,所以记录一下它的属性和方法,方便查询
    //构造方法
    public init(frame frameRect: NSRect)
    public init?(coder: NSCoder)
    
    //数据源和代理
    weak open var dataSource: NSTableViewDataSource?
    weak open var delegate: NSTableViewDelegate?
    //设置头视图,会被列头图就行覆盖
    open var headerView: NSTableHeaderView?
    //设置头图右侧视图 可以自定义图标
    open var cornerView: NSView?
    //设置是否允许列拖拽排序
    open var allowsColumnReordering: Bool
    //设置是否允许调整列宽度
    open var allowsColumnResizing: Bool
    //调整列宽度的风格
    open var columnAutoresizingStyle: NSTableViewColumnAutoresizingStyle
    //设置分割线风格
    open var gridStyleMask: NSTableViewGridLineStyle
    //设置cell之间的间隔 需要设置为NSSize对象
    open var intercellSpacing: NSSize
    //是否开启斑马线
    open var usesAlternatingRowBackgroundColors: Bool
    //背景颜色
    @NSCopying open var backgroundColor: NSColor
    //设置分割线颜色
    @NSCopying open var gridColor: NSColor
    //设置尺寸风格
    @available(OSX 10.7, *)
    open var rowSizeStyle: NSTableViewRowSizeStyle
    //设置有效的行类型
    @available(OSX 10.7, *)
    open var effectiveRowSizeStyle: NSTableViewRowSizeStyle { get }
    //行高
    open var rowHeight: CGFloat
    //记录行高度的改变
    open func noteHeightOfRows(withIndexesChanged indexSet: IndexSet)
    //获取所有列
    open var tableColumns: [NSTableColumn] { get }
    //列的个数
    open var numberOfColumns: Int { get }
    //行的个数
    open var numberOfRows: Int { get }
    //添加列
    open func addTableColumn(_ tableColumn: NSTableColumn)
    //删除列
    open func removeTableColumn(_ tableColumn: NSTableColumn)
    //移动列
    open func moveColumn(_ oldIndex: Int, toColumn newIndex: Int)
    //根据identifier获取某个列对象的下表
    open func column(withIdentifier identifier: String) -> Int
    //根据identifier获取某个列对象
    open func tableColumn(withIdentifier identifier: String) -> NSTableColumn?
    //标题
    open func tile()
    //进行自动尺寸的调整
    open func sizeToFit()
    //进行最后一列尺寸的调整
    open func sizeLastColumnToFit()
    //滚动到指定行可见
    open func scrollRowToVisible(_ row: Int)
    //滚动到指定列可见
    open func scrollColumnToVisible(_ column: Int)
    //重新加载数据
    open func reloadData()
    //记录行数的改变
    open func noteNumberOfRowsChanged()
    //重新加载指定位置的数据
    @available(OSX 10.6, *)
    open func reloadData(forRowIndexes rowIndexes: IndexSet, columnIndexes: IndexSet)
    //获取编辑的列
    open var editedColumn: Int { get }
    //获取编辑的行
    open var editedRow: Int { get }
    //获取点击的列
    open var clickedColumn: Int { get }
    //获取点击的行
    open var clickedRow: Int { get }
    //设置双击方法
    open var doubleAction: Selector?
    //排序回调函数
    open var sortDescriptors: [NSSortDescriptor]
    //设置列头提示图片
    open func setIndicatorImage(_ image: NSImage?, in tableColumn: NSTableColumn)
    //获取列头提示图片
    open func indicatorImage(in tableColumn: NSTableColumn) -> NSImage?
    //获取高亮的列
    unowned(unsafe) open var highlightedTableColumn: NSTableColumn?
    
    //下面这些方法与列表拖拽有关
    open var verticalMotionCanBeginDrag: Bool
    open func canDragRows(with rowIndexes: IndexSet, at mouseDownPoint: NSPoint) -> Bool
    open func dragImageForRows(with dragRows: IndexSet, tableColumns: [NSTableColumn], event dragEvent: NSEvent, offset dragImageOffset: NSPointPointer) -> NSImage
    open func setDraggingSourceOperationMask(_ mask: NSDragOperation, forLocal isLocal: Bool)
    open func setDropRow(_ row: Int, dropOperation: NSTableViewDropOperation)
    
    //下面这些方法和列表选中有关
    //是否支持多选
    open var allowsMultipleSelection: Bool
    //是否允许都不选中
    open var allowsEmptySelection: Bool
    //是否支持选中列 如果设置为YES 点击列头会将整列选中
    open var allowsColumnSelection: Bool
    //全选 用于子类重写
    open func selectAll(_ sender: Any?)
    //全不选 用于子类重写
    open func deselectAll(_ sender: Any?)
    //选中列
    open func selectColumnIndexes(_ indexes: IndexSet, byExtendingSelection extend: Bool)
    //选中行
    open func selectRowIndexes(_ indexes: IndexSet, byExtendingSelection extend: Bool)
    //获取所有选中的index
    open var selectedColumnIndexes: IndexSet { get }
    //获取所有选中的行
    open var selectedRowIndexes: IndexSet { get }
    //取消某列的选中
    open func deselectColumn(_ column: Int)
    //取消某行的选中
    open func deselectRow(_ row: Int)
    //获取被选中的列
    open var selectedColumn: Int { get }
    //获取被选中的行
    open var selectedRow: Int { get }
    //判断某列是否被选中
    open func isColumnSelected(_ column: Int) -> Bool
    //判断某行是否被选中
    open func isRowSelected(_ row: Int) -> Bool
    //获取选中的列数
    open var numberOfSelectedColumns: Int { get }
    //获取选中的行数
    open var numberOfSelectedRows: Int { get }
    //允许被选中
    @available(OSX 10.5, *)
    open var allowsTypeSelect: Bool
    //设置选中的高亮状态
    @available(OSX 10.5, *)
    open var selectionHighlightStyle: NSTableViewSelectionHighlightStyle
    //设置拖拽风格
    @available(OSX 10.6, *)
    open var draggingDestinationFeedbackStyle: NSTableViewDraggingDestinationFeedbackStyle
    //获取某列的位置尺寸
    open func rect(ofColumn column: Int) -> NSRect
    //获取某行的位置尺寸
    open func rect(ofRow row: Int) -> NSRect
    //获取某个范围内的列
    @available(OSX 10.5, *)
    open func columnIndexes(in rect: NSRect) -> IndexSet
    //获取某个范围内的行
    open func rows(in rect: NSRect) -> NSRange
    //获取包含某个点的列
    open func column(at point: NSPoint) -> Int
    //获取包含某个点的行
    open func row(at point: NSPoint) -> Int
    //获取某个cell的位置尺寸
    open func frameOfCell(atColumn column: Int, row: Int) -> NSRect
    //自动保存名字
    open var autosaveName: String?
    //是否自动保存列
    open var autosaveTableColumns: Bool
    //更改列
    open func editColumn(_ column: Int, row: Int, with event: NSEvent?, select: Bool)
    //手动绘制某行
    open func drawRow(_ row: Int, clipRect: NSRect)
    //绘制高亮选中状态
    open func highlightSelection(inClipRect clipRect: NSRect)
    //手动绘制网格
    open func drawGrid(inClipRect clipRect: NSRect)
    //手动绘制背景色
    open func drawBackground(inClipRect clipRect: NSRect)
    //获取某个位置的View,用于view-base
    @available(OSX 10.7, *)
    open func view(atColumn column: Int, row: Int, makeIfNecessary: Bool) -> NSView?
    //获取某行的视图 用于view-base
    @available(OSX 10.7, *)
    open func rowView(atRow row: Int, makeIfNecessary: Bool) -> NSTableRowView?
    //获取某个View所在的行 用于view-base
    @available(OSX 10.7, *)
    open func row(for view: NSView) -> Int
    //获取某个View所在的列 用于view-base
    @available(OSX 10.7, *)
    open func column(for view: NSView) -> Int
    //创建一个用于渲染的View 用于view-base
    @available(OSX 10.7, *)
    open func make(withIdentifier identifier: String, owner: Any?) -> NSView?
    //列出可用的行视图
    @available(OSX 10.7, *)
    open func enumerateAvailableRowViews(_ handler: (NSTableRowView, Int) -> Swift.Void)
    //是否允许某行浮动
    @available(OSX 10.7, *)
    open var floatsGroupRows: Bool
    //是否隐藏左右滑动时的功能按钮
    @available(OSX 10.11, *)
    open var rowActionsVisible: Bool
    
    //下面这些方法用来根据列表数据
    //开始更新
    @available(OSX 10.7, *)
    open func beginUpdates()
    //结束更新
    @available(OSX 10.7, *)
    open func endUpdates()
    //插入行
    @available(OSX 10.7, *)
    open func insertRows(at indexes: IndexSet, withAnimation animationOptions: NSTableViewAnimationOptions = [])
    //删除行
    @available(OSX 10.7, *)
    open func removeRows(at indexes: IndexSet, withAnimation animationOptions: NSTableViewAnimationOptions = [])
    //移动行
    @available(OSX 10.7, *)
    open func moveRow(at oldIndex: Int, to newIndex: Int)
    //隐藏行
    @available(OSX 10.11, *)
    open func hideRows(at indexes: IndexSet, withAnimation rowAnimation: NSTableViewAnimationOptions = [])
    //取消隐藏行
    @available(OSX 10.11, *)
    open func unhideRows(at indexes: IndexSet, withAnimation rowAnimation: NSTableViewAnimationOptions = [])
    //所有隐藏状态的行
    @available(OSX 10.11, *)
    open var hiddenRowIndexes: IndexSet { get }
    //注册某个NSNib类进行复用
    @available(OSX 10.8, *)
    open func register(_ nib: NSNib?, forIdentifier identifier: String)
    //获取注册过的NSNib
    @available(OSX 10.8, *)
    open var registeredNibsByIdentifier: [String : NSNib]? { get }
    //有行被添加时调用
    @available(OSX 10.7, *)
    open func didAdd(_ rowView: NSTableRowView, forRow row: Int)
    //有行被移动时调用
    @available(OSX 10.7, *)
    open func didRemove(_ rowView: NSTableRowView, forRow row: Int)
    //是否将tableView设置成静态
    @available(OSX 10.10, *)
    open var usesStaticContents: Bool
    //用户界面布局方向:枚举类型
    open var userInterfaceLayoutDirection: NSUserInterfaceLayoutDirection

你可能感兴趣的:(MacOS-NSTableView中常用的属性和方法)