NSTableView结构

20220403002644161

NSTableView中常用的属性和方法

  1. //初始化方法
  2. - (instancetype)initWithFrame:(NSRect)frameRect;
  3. - (nullable instancetype)initWithCoder:(NSCoder *)coder;
  4. //设置代理
  5. @property (nullable, weak) id <NSTableViewDataSource> dataSource;
  6. @property (nullable, weak) id <NSTableViewDelegate> delegate;
  7. //设置TableView的头视图 会被列头图就行覆盖
  8. @property (nullable, strong) NSTableHeaderView *headerView;
  9. //设置头图右侧视图 可以自定义图标
  10. @property (nullable, strong) NSView *cornerView;
  11. //设置是否允许列拖拽排序
  12. @property BOOL allowsColumnReordering;
  13. //设置是否允许调整列宽度
  14. @property BOOL allowsColumnResizing;
  15. //调整列宽度的风格
  16. /*
  17. typedef NS_ENUM(NSUInteger, NSTableViewColumnAutoresizingStyle) {
  18. //不可调整
  19. NSTableViewNoColumnAutoresizing = 0,
  20. //平分
  21. NSTableViewUniformColumnAutoresizingStyle,
  22. //从后往前调整
  23. NSTableViewSequentialColumnAutoresizingStyle,
  24. //从前往后调整
  25. NSTableViewReverseSequentialColumnAutoresizingStyle,
  26. //最后一列可调整
  27. NSTableViewLastColumnOnlyAutoresizingStyle,
  28. //第一列可调整
  29. NSTableViewFirstColumnOnlyAutoresizingStyle
  30. };
  31. */
  32. @property NSTableViewColumnAutoresizingStyle columnAutoresizingStyle;
  33. //设置分割线风格
  34. /*
  35. typedef NS_OPTIONS(NSUInteger, NSTableViewGridLineStyle) {
  36. //无分割线
  37. NSTableViewGridNone = 0,
  38. //竖直分割线
  39. NSTableViewSolidVerticalGridLineMask = 1 << 0,
  40. //水平分割线
  41. NSTableViewSolidHorizontalGridLineMask = 1 << 1,
  42. //水平虚线分割线
  43. NSTableViewDashedHorizontalGridLineMask ,
  44. };
  45. */
  46. @property NSTableViewGridLineStyle gridStyleMask;
  47. //设置cell之间的间隔 需要设置为NSSize对象
  48. @property NSSize intercellSpacing;
  49. //是否开启斑马纹
  50. @property BOOL usesAlternatingRowBackgroundColors;
  51. //背景色
  52. @property (copy) NSColor *backgroundColor;
  53. //设置分割线颜色
  54. @property (copy) NSColor *gridColor;
  55. //设置行尺寸风格
  56. /*
  57. typedef NS_ENUM(NSInteger, NSTableViewRowSizeStyle) {
  58. //默认
  59. NSTableViewRowSizeStyleDefault = -1,
  60. //自定义
  61. NSTableViewRowSizeStyleCustom = 0,
  62. //小尺寸风格
  63. NSTableViewRowSizeStyleSmall = 1,
  64. //中等尺寸风格
  65. NSTableViewRowSizeStyleMedium = 2,
  66. //大尺寸风格
  67. NSTableViewRowSizeStyleLarge = 3,
  68. } NS_ENUM_AVAILABLE_MAC(10_7);
  69. */
  70. @property NSTableViewRowSizeStyle rowSizeStyle;
  71. //行高
  72. @property CGFloat rowHeight;
  73. //获取所有列对象
  74. @property (readonly, copy) NSArray<NSTableColumn *> *tableColumns;
  75. //获取列数
  76. @property (readonly) NSInteger numberOfColumns;
  77. //获取行数
  78. @property (readonly) NSInteger numberOfRows;
  79. //添加一列
  80. - (void)addTableColumn:(NSTableColumn *)tableColumn;
  81. //移除一列
  82. - (void)removeTableColumn:(NSTableColumn *)tableColumn;
  83. //移动列
  84. - (void)moveColumn:(NSInteger)oldIndex toColumn:(NSInteger)newIndex;
  85. //根据id获取列的下标
  86. - (NSInteger)columnWithIdentifier:(NSString *)identifier;
  87. //根据id获取列对象
  88. - (nullable NSTableColumn *)tableColumnWithIdentifier:(NSString *)identifier;
  89. //滚动到指定行可见
  90. - (void)scrollRowToVisible:(NSInteger)row;
  91. //滚动到指定列可见
  92. - (void)scrollColumnToVisible:(NSInteger)column;
  93. //重新加载数据
  94. - (void)reloadData;
  95. //重新加载指定位置的数据
  96. - (void)reloadDataForRowIndexes:(NSIndexSet *)rowIndexes columnIndexes:(NSIndexSet *)columnIndexes;
  97. //获取编辑的列
  98. @property (readonly) NSInteger editedColumn;
  99. //获取编辑的行
  100. @property (readonly) NSInteger editedRow;
  101. //获取点击的列
  102. @property (readonly) NSInteger clickedColumn;
  103. //获取点击的行
  104. @property (readonly) NSInteger clickedRow;
  105. //设置列头提示图片
  106. - (void)setIndicatorImage:(nullable NSImage *)image inTableColumn:(NSTableColumn *)tableColumn;
  107. //获取列头提示图片
  108. - (nullable NSImage *)indicatorImageInTableColumn:(NSTableColumn *)tableColumn;
  109. //下面这些方法与列表拖拽有关
  110. @property BOOL verticalMotionCanBeginDrag;
  111. - (BOOL)canDragRowsWithIndexes:(NSIndexSet *)rowIndexes atPoint:(NSPoint)mouseDownPoint;
  112. - (NSImage *)dragImageForRowsWithIndexes:(NSIndexSet *)dragRows tableColumns:(NSArray<NSTableColumn *> *)tableColumns event:(NSEvent *)dragEvent offset:(NSPointPointer)dragImageOffset;
  113. - (void)setDraggingSourceOperationMask:(NSDragOperation)mask forLocal:(BOOL)isLocal;
  114. - (void)setDropRow:(NSInteger)row dropOperation:(NSTableViewDropOperation)dropOperation;
  115. //下面这些方法与列表选中有关
  116. //是否支持多选
  117. @property BOOL allowsMultipleSelection;
  118. //是否允许都不选中
  119. @property BOOL allowsEmptySelection;
  120. //是否支持选中列 如果设置为YES 点击列头会将整列选中
  121. @property BOOL allowsColumnSelection;
  122. //全选 用于子类重写
  123. - (void)selectAll:(nullable id)sender;
  124. //全不选 用于子类重写
  125. - (void)deselectAll:(nullable id)sender;
  126. //进行列选中
  127. - (void)selectColumnIndexes:(NSIndexSet *)indexes byExtendingSelection:(BOOL)extend;
  128. //进行行选中
  129. - (void)selectRowIndexes:(NSIndexSet *)indexes byExtendingSelection:(BOOL)extend;
  130. //获取所有选中列index
  131. @property (readonly, copy) NSIndexSet *selectedColumnIndexes;
  132. //获取所有选中行index
  133. @property (readonly, copy) NSIndexSet *selectedRowIndexes;
  134. //取消某列的选中
  135. - (void)deselectColumn:(NSInteger)column;
  136. //取消某行的选中
  137. - (void)deselectRow:(NSInteger)row;
  138. //判断某列是否被选中
  139. - (BOOL)isColumnSelected:(NSInteger)column;
  140. //判断某行是否被选中
  141. - (BOOL)isRowSelected:(NSInteger)row;
  142. //获取选中的列数
  143. @property (readonly) NSInteger numberOfSelectedColumns;
  144. //获取选中的行数
  145. @property (readonly) NSInteger numberOfSelectedRows;
  146. //获取某列的位置尺寸
  147. - (NSRect)rectOfColumn:(NSInteger)column;
  148. //获取某行的位置尺寸
  149. - (NSRect)rectOfRow:(NSInteger)row;
  150. //获取某个范围内的列
  151. - (NSIndexSet *)columnIndexesInRect:(NSRect)rect;
  152. //获取某个范围内的行
  153. - (NSRange)rowsInRect:(NSRect)rect;
  154. //获取包含某个点的列
  155. - (NSInteger)columnAtPoint:(NSPoint)point;
  156. //获取包含某个点的行
  157. - (NSInteger)rowAtPoint:(NSPoint)point;
  158. //获取某个cell的位置尺寸
  159. - (NSRect)frameOfCellAtColumn:(NSInteger)column row:(NSInteger)row;
  160. //获取某个位置的View,用于view-base
  161. - (nullable __kindof NSView *)viewAtColumn:(NSInteger)column row:(NSInteger)row makeIfNecessary:(BOOL)makeIfNecessary;
  162. //获取某行的视图 用于view-base
  163. - (nullable __kindof NSTableRowView *)rowViewAtRow:(NSInteger)row makeIfNecessary:(BOOL)makeIfNecessary;
  164. //获取某个View所在的行 用于view-base
  165. - (NSInteger)rowForView:(NSView *)view;
  166. //获取某个View所在的列 用于view-base
  167. - (NSInteger)columnForView:(NSView *)view;
  168. //创建一个用于渲染的View 用于view-base
  169. - (nullable __kindof NSView *)makeViewWithIdentifier:(NSString *)identifier owner:(nullable id)owner;
  170. //下面这些方法用来根据列表数据
  171. //开始更新
  172. - (void)beginUpdates NS_AVAILABLE_MAC(10_7);
  173. //结束更新
  174. - (void)endUpdates NS_AVAILABLE_MAC(10_7);
  175. //插入行
  176. - (void)insertRowsAtIndexes:(NSIndexSet *)indexes withAnimation:(NSTableViewAnimationOptions)animationOptions NS_AVAILABLE_MAC(10_7);
  177. //删除行
  178. - (void)removeRowsAtIndexes:(NSIndexSet *)indexes withAnimation:(NSTableViewAnimationOptions)animationOptions NS_AVAILABLE_MAC(10_7);
  179. //移动行
  180. - (void)moveRowAtIndex:(NSInteger)oldIndex toIndex:(NSInteger)newIndex NS_AVAILABLE_MAC(10_7);
  181. //隐藏行
  182. - (void)hideRowsAtIndexes:(NSIndexSet *)indexes withAnimation:(NSTableViewAnimationOptions)rowAnimation NS_AVAILABLE_MAC(10_11);
  183. //取消隐藏行
  184. - (void)unhideRowsAtIndexes:(NSIndexSet *)indexes withAnimation:(NSTableViewAnimationOptions)rowAnimation NS_AVAILABLE_MAC(10_11);
  185. //所有隐藏状态的行
  186. @property (readonly, copy) NSIndexSet *hiddenRowIndexes;

NSTableViewDelegate协议

  1. //view-base的TableView相关delegate方法
  2. /*
  3. 设置每个数据载体的View
  4. */
  5. - (nullable NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row;
  6. /*
  7. 自定义行视图
  8. */
  9. - (nullable NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row NS_AVAILABLE_MAC(10_7);
  10. /*
  11. 添加一行时会调用的回调
  12. */
  13. - (void)tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row;
  14. /*
  15. 移除一行时会调用的回调
  16. */
  17. - (void)tableView:(NSTableView *)tableView didRemoveRowView:(NSTableRowView *)rowView forRow:(NSInteger)row;
  18. //cell-base的TableView相关delegate方法
  19. /*
  20. cell将要渲染时调用的回调,可以在其中对cell进行定制
  21. */
  22. - (void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row;
  23. /*
  24. 设置某个cell是否可以编辑
  25. */
  26. - (BOOL)tableView:(NSTableView *)tableView shouldEditTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row;
  27. /*
  28. 设置当鼠标悬停在cell上时 显示的提示文案
  29. */
  30. - (NSString *)tableView:(NSTableView *)tableView toolTipForCell:(NSCell *)cell rect:(NSRectPointer)rect tableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row mouseLocation:(NSPoint)mouseLocation;
  31. /*
  32. 当cell的宽度不够显示完全cell的内容时,设置是否允许鼠标放置扩展cell
  33. */
  34. - (BOOL)tableView:(NSTableView *)tableView shouldShowCellExpansionForTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row;
  35. /*
  36. 设置是否加强cell的交互能力,这样一些按钮状态的修改也会触发cell编辑的状态
  37. */
  38. - (BOOL)tableView:(NSTableView *)tableView shouldTrackCell:(NSCell *)cell forTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row;
  39. /*
  40. 设置自定义cell
  41. */
  42. - (nullable NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row;
  43. //通用的TableView代理方法
  44. /*
  45. 设置是否允许修改选中
  46. */
  47. - (BOOL)selectionShouldChangeInTableView:(NSTableView *)tableView;
  48. /*
  49. 设置某行是否可以选中
  50. */
  51. - (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)row;
  52. /*
  53. 当用户通过键盘或鼠标将要选中某行时,返回设置要选中的行
  54. 如果实现了这个方法,上面一个方法将不会被调用
  55. */
  56. - (NSIndexSet *)tableView:(NSTableView *)tableView selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes;
  57. /*
  58. 设置某列是否可以被选中
  59. */
  60. - (BOOL)tableView:(NSTableView *)tableView shouldSelectTableColumn:(nullable NSTableColumn *)tableColumn;
  61. /*
  62. 用户点击列头时调用的方法
  63. */
  64. - (void)tableView:(NSTableView *)tableView mouseDownInHeaderOfTableColumn:(NSTableColumn *)tableColumn;
  65. /*
  66. 用法同上
  67. */
  68. - (void)tableView:(NSTableView *)tableView didClickTableColumn:(NSTableColumn *)tableColumn;
  69. /*
  70. 对列进行拖拽改变顺序时调用的方法
  71. */
  72. - (void)tableView:(NSTableView *)tableView didDragTableColumn:(NSTableColumn *)tableColumn;
  73. /*
  74. 设置行高
  75. */
  76. - (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row;
  77. /*
  78. 下面这些方法与行检索有关
  79. */
  80. - (nullable NSString *)tableView:(NSTableView *)tableView typeSelectStringForTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row NS_AVAILABLE_MAC(10_5);
  81. - (NSInteger)tableView:(NSTableView *)tableView nextTypeSelectMatchFromRow:(NSInteger)startRow toRow:(NSInteger)endRow forString:(NSString *)searchString NS_AVAILABLE_MAC(10_5);
  82. - (BOOL)tableView:(NSTableView *)tableView shouldTypeSelectForEvent:(NSEvent *)event withCurrentSearchString:(nullable NSString *)searchString NS_AVAILABLE_MAC(10_5);
  83. /*
  84. 设置某行是否绘制成组样式
  85. */
  86. - (BOOL)tableView:(NSTableView *)tableView isGroupRow:(NSInteger)row;
  87. /*
  88. 调整列宽度
  89. */
  90. - (CGFloat)tableView:(NSTableView *)tableView sizeToFitWidthOfColumn:(NSInteger)column;
  91. /*
  92. 设置是否支持列的移动排序
  93. */
  94. - (BOOL)tableView:(NSTableView *)tableView shouldReorderColumn:(NSInteger)columnIndex toColumn:(NSInteger)newColumnIndex;
  95. //设置某行向左或向右滑动时要显示的功能按钮
  96. /*
  97. typedef NS_ENUM(NSInteger, NSTableRowActionEdge) {
  98. NSTableRowActionEdgeLeading, // 左划
  99. NSTableRowActionEdgeTrailing, // 右划
  100. } NS_ENUM_AVAILABLE_MAC(10_11);
  101. */
  102. - (NSArray<NSTableViewRowAction *> *)tableView:(NSTableView *)tableView rowActionsForRow:(NSInteger)row edge:(NSTableRowActionEdge)edge NS_AVAILABLE_MAC(10_11);
  103. /*
  104. TableView选中修改时调用
  105. */
  106. - (void)tableViewSelectionDidChange:(NSNotification *)notification;
  107. /*
  108. TableView列移动完成时调用的函数
  109. */
  110. - (void)tableViewColumnDidMove:(NSNotification *)notification;
  111. /*
  112. TableView列宽度变化时调用的函数
  113. */
  114. - (void)tableViewColumnDidResize:(NSNotification *)notification;
  115. /*
  116. TableView选中正在修改时调用的函数
  117. */
  118. - (void)tableViewSelectionIsChanging:(NSNotification *)notification;

NSTableViewDataSource协议

  1. /*
  2. 无论基于Cell还是基于View,这个方法都需要实现,用来设置列表的行数
  3. */
  4. - (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView;
  5. /*
  6. 如果使用cell-base的TableView视图,这个方法是必须实现的,其为要渲染的cell提供数据
  7. */
  8. - (nullable id)tableView:(NSTableView *)tableView objectValueForTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row;
  9. /*
  10. 这个函数当用户编辑了cell中的内容时会被调用,一般需要在其中进行数据源的修改
  11. */
  12. - (void)tableView:(NSTableView *)tableView setObjectValue:(nullable id)object forTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row;
  13. /*
  14. 当用户修改了行排序规则时调用的回调
  15. */
  16. - (void)tableView:(NSTableView *)tableView sortDescriptorsDidChange:(NSArray<NSSortDescriptor *> *)oldDescriptors;
  17. //下面这些方法全部与列表的数据拖拽相关
  18. - (nullable id <NSPasteboardWriting>)tableView:(NSTableView *)tableView pasteboardWriterForRow:(NSInteger)row;
  19. - (void)tableView:(NSTableView *)tableView draggingSession:(NSDraggingSession *)session willBeginAtPoint:(NSPoint)screenPoint forRowIndexes:(NSIndexSet *)rowIndexes NS_AVAILABLE_MAC(10_7);
  20. - (void)tableView:(NSTableView *)tableView draggingSession:(NSDraggingSession *)session endedAtPoint:(NSPoint)screenPoint operation:(NSDragOperation)operation NS_AVAILABLE_MAC(10_7);
  21. - (void)tableView:(NSTableView *)tableView updateDraggingItemsForDrag:(id <NSDraggingInfo>)draggingInfo NS_AVAILABLE_MAC(10_7);
  22. - (BOOL)tableView:(NSTableView *)tableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard;
  23. - (NSDragOperation)tableView:(NSTableView *)tableView validateDrop:(id <NSDraggingInfo>)info proposedRow:(NSInteger)row proposedDropOperation:(NSTableViewDropOperation)dropOperation;
  24. - (BOOL)tableView:(NSTableView *)tableView acceptDrop:(id <NSDraggingInfo>)info row:(NSInteger)row dropOperation:(NSTableViewDropOperation)dropOperation;
  25. - (NSArray<NSString *> *)tableView:(NSTableView *)tableView namesOfPromisedFilesDroppedAtDestination:(NSURL *)dropDestination forDraggedRowsWithIndexes:(NSIndexSet *)indexSet;

NSTableColume

  1. //初始化方法,指定一个列ID
  2. - (instancetype)initWithIdentifier:(NSString *)identifier;
  3. //与此列关联的ID
  4. @property (copy) NSString *identifier;
  5. //关联的TableView
  6. @property (nullable, assign) NSTableView *tableView;
  7. //设置列宽度
  8. @property CGFloat width;
  9. //设置最小列宽度
  10. @property CGFloat minWidth;
  11. //设置最大列宽度
  12. @property CGFloat maxWidth;
  13. //设置类标题
  14. @property (copy) NSString *title;
  15. /*
  16. 列标题视图 开发者可以对其进行修改
  17. 需要注意,NSTableHeaderCell是继承自NSTextFieldCell
  18. */
  19. @property (strong) __kindof NSTableHeaderCell *headerCell;
  20. //设置此列是否可以进行编辑
  21. @property (getter=isEditable) BOOL editable;
  22. //进行列尺寸的调整 以列标题视图的宽度为标准
  23. - (void)sizeToFit;
  24. //提供了这个属性,会在列标题那里显示一个排序按钮 点击列标题后可以进行排序操作(会回调相关协议方法)
  25. @property (nullable, copy) NSSortDescriptor *sortDescriptorPrototype;
  26. //设置列尺寸的调整模式 枚举如下
  27. /*
  28. typedef NS_OPTIONS(NSUInteger, NSTableColumnResizingOptions) {
  29. NSTableColumnNoResizing = 0, //不允许进行宽度调整
  30. //详见NSTabelView的columnAutoresizingStyle属性
  31. NSTableColumnAutoresizingMask = ( 1 << 0 ), //使用tableView的column调整策略
  32. NSTableColumnUserResizingMask = ( 1 << 1 ), //允许用户进行尺寸调整
  33. };
  34. */
  35. @property NSTableColumnResizingOptions resizingMask;
  36. //设置列头的提示标题 当鼠标悬停在类标题上时 会显示此提示
  37. @property (nullable, copy) NSString *headerToolTip;
  38. //设置此列是否隐藏
  39. @property (getter=isHidden) BOOL hidden;
  40. //设置此列所有行的数据载体视图 如果不设置 默认为NSTextFieldCell
  41. @property (strong) id dataCell;
  42. //为TableView列表提供数据载体视图
  43. - (id)dataCellForRow:(NSInteger)row;

NSTableRowView

  1. //选中的高亮风格
  2. /*
  3. typedef NS_ENUM(NSInteger, NSTableViewSelectionHighlightStyle) {
  4. //无高亮风格
  5. NSTableViewSelectionHighlightStyleNone,
  6. //规则的高亮风格
  7. NSTableViewSelectionHighlightStyleRegular = 0,
  8. //源列表风格
  9. NSTableViewSelectionHighlightStyleSourceList = 1,
  10. };
  11. */
  12. @property NSTableViewSelectionHighlightStyle selectionHighlightStyle;
  13. //是否强调
  14. @property(getter=isEmphasized) BOOL emphasized;
  15. //设置是否行组风格
  16. @property(getter=isGroupRowStyle) BOOL groupRowStyle;
  17. //是否选中状态
  18. @property(getter=isSelected) BOOL selected;
  19. //其前一行的选中状态
  20. @property(getter=isPreviousRowSelected) BOOL previousRowSelected;
  21. //其后一行的选中状态
  22. @property(getter=isNextRowSelected) BOOL nextRowSelected;
  23. //设置此行是否浮动
  24. @property(getter=isFloating) BOOL floating;
  25. //拖放拖动效果
  26. @property(getter=isTargetForDropOperation) BOOL targetForDropOperation;
  27. //拖放风格
  28. @property NSTableViewDraggingDestinationFeedbackStyle draggingDestinationFeedbackStyle;
  29. //设置拖放目标的缩进量
  30. @property CGFloat indentationForDropOperation;
  31. //背景色
  32. @property(copy) NSColor *backgroundColor;
  33. //子类重写下面方法来进行行容器视图的自定义
  34. //画背景色
  35. - (void)drawBackgroundInRect:(NSRect)dirtyRect;
  36. //画选中背景
  37. - (void)drawSelectionInRect:(NSRect)dirtyRect;
  38. //画分割线
  39. - (void)drawSeparatorInRect:(NSRect)dirtyRect;
  40. //绘制拖放时的用户反馈IU
  41. - (void)drawDraggingDestinationFeedbackInRect:(NSRect)dirtyRect;
  42. //列数
  43. @property(readonly) NSInteger numberOfColumns;
  44. //提供的访问特定视图的方法
  45. - (nullable id)viewAtColumn:(NSInteger)column;

常用通知

  1. //列表选择改变后发的通知
  2. APPKIT_EXTERN NSNotificationName NSTableViewSelectionDidChangeNotification;
  3. //列移动后发的通知
  4. APPKIT_EXTERN NSNotificationName NSTableViewColumnDidMoveNotification;
  5. //列宽度改变后发的通知
  6. APPKIT_EXTERN NSNotificationName NSTableViewColumnDidResizeNotification;
  7. //选择改变时发的通知
  8. APPKIT_EXTERN NSNotificationName NSTableViewSelectionIsChangingNotification;