MacOSSwift

macOS开发之NSTableView重复点击

2021-04-23  本文已影响0人  chasitu

首先我们来看看我们在使用NSTableview列表的问题

解决:思路是判断点击的位置

  1. 自定义一个NSTableview,添加代理方法
@protocol SHCustomTableViewDelegate <NSObject>
@required
- (void)tableView:(NSTableView *)tableView didClickIndexPath:(NSIndexPath *)indexPath;
@end
@interface SHCustomTableView : NSTableView
@property (nonatomic , weak) id<SHCustomTableViewDelegate> extendedDelegate;
@end
  1. 获取鼠标点击的坐标进行判断
#import "SHCustomTableView.h"

@implementation SHCustomTableView

- (void)mouseDown:(NSEvent *)event
{
    NSPoint globalLocation = [event locationInWindow];
    NSPoint localLocation = [self convertPoint:globalLocation fromView:nil];
    NSInteger clickColumn = [self columnAtPoint:localLocation];
    NSInteger clickRow = [self rowAtPoint:localLocation];
    [super mouseDown:event];
    if (clickRow != -1) {
        [self.extendedDelegate tableView:self didClickIndexPath:[NSIndexPath indexPathForItem:clickRow inSection:clickColumn]];
    }
}

@end
  1. 使用
@interface SHHomeWorkViewController ()<NSTableViewDelegate,
NSTableViewDataSource,
SHCustomTableViewDelegate>
  _tableView.extendedDelegate = self;
- (void)tableView:(NSTableView *)tableView didClickIndexPath:(NSIndexPath *)indexPath
{
    //do something
}

完成

上一篇 下一篇

猜你喜欢

热点阅读