美文网首页
MacOS-NSTableView中常用的属性和方法

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

作者: 加盐白咖啡 | 来源:发表于2020-03-23 21:30 被阅读0次
    • 因为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中常用的属性和方法

          本文链接:https://www.haomeiwen.com/subject/tppgyhtx.html