首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在不使用NSTableViewDataSource的情况下使用拖放功能对NSTableView行进行重新排序

,可以通过以下步骤实现:

  1. 首先,确保你的NSTableView已经设置了拖放功能。你可以在Interface Builder中将NSTableView的"Dragging Destination"属性设置为"YES"。
  2. 创建一个类来处理拖放操作,我们可以称之为DragDropHandler。这个类需要实现NSTableViewDelegate协议和NSTableViewDataSource协议。
  3. 在DragDropHandler类中,实现以下方法来处理拖放操作:
    • (BOOL)tableView:(NSTableView *)tableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pasteboard { // 将被拖动的行的索引写入粘贴板 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:rowIndexes]; [pasteboard declareTypes:@[kMyCustomDragType] owner:self]; [pasteboard setData:data forType:kMyCustomDragType]; return YES; }
    • (NSDragOperation)tableView:(NSTableView *)tableView validateDrop:(id<NSDraggingInfo>)info proposedRow:(NSInteger)row proposedDropOperation:(NSTableViewDropOperation)operation { // 验证拖放操作是否有效 if (operation == NSTableViewDropAbove) { return NSDragOperationMove; } return NSDragOperationNone; }
    • (BOOL)tableView:(NSTableView *)tableView acceptDrop:(id<NSDraggingInfo>)info row:(NSInteger)row dropOperation:(NSTableViewDropOperation)operation { // 接受拖放操作并重新排序行 NSPasteboard *pasteboard = [info draggingPasteboard]; NSData *data = [pasteboard dataForType:kMyCustomDragType]; NSIndexSet *rowIndexes = [NSKeyedUnarchiver unarchiveObjectWithData:data]; NSInteger fromRow = [rowIndexes firstIndex];
    • // 执行重新排序操作 // ...
    • return YES; }
  • 在你的视图控制器中,将DragDropHandler类设置为NSTableView的delegate和dataSource:
  • DragDropHandler *dragDropHandler = [[DragDropHandler alloc] init]; [tableView setDelegate:dragDropHandler]; [tableView setDataSource:dragDropHandler];

通过以上步骤,你可以在不使用NSTableViewDataSource的情况下使用拖放功能对NSTableView行进行重新排序。请注意,以上代码只是一个示例,你需要根据你的具体需求进行适当的修改和扩展。

相关搜索:使用拖放时的RealmSwift对UicollectioView项目进行重新排序使用角度2拖放和重新排序ag-grid中的行ag- grid :使用拖放对网格中的行进行重新排序拖放可在不使用列表/表单的情况下重新排序文本Qt:如何使用自定义模型在QListView中实现简单的内部拖放来对项目进行重新排序如果只使用一行,是否可以使用size classe对bootstrap 4中的列进行重新排序?使用dplyr在R中不指定列名的情况下插入新行在不丢失当前模型的情况下使用旧模型进行预测如何在不使用MySQL进行排序的情况下获得表中记录的第一行?在不重新排序数据集的情况下使用ggplot绘制时间序列箱图如何使用Python在不添加新行的情况下更改循环内文件中的行值?使用geom_tile的热图如何在不使用刻面的情况下根据其他因素进行划分和重新排序在不使用FOR XML的情况下将多行连接到单个行/列的查询-使用FOR XML进行编辑在不使用java.util的情况下从对象数组到堆栈中进行排序在不使用ggplot的情况下,将R中的条形图从最低到最高重新排序在不使用字段数据的情况下对elasticsearch中的文本字段进行排序在使用函数with()将行旋转到R中的列之后,如何按月对列名进行排序?在不使用ifelse的情况下对datafrmae中的元素进行重新分类的正确R用法是什么?有没有一种方法可以在不指定网站的情况下使用URL进行搜索?如何重新加载div (使用JavaScript)以在不刷新页面的情况下更新图形中的更改
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

macOS开发之NSTableView应用详解

@property (getter=isEditable) BOOL editable; //进行列尺寸调整 以列标题视图宽度为标准 - (void)sizeToFit; //提供了这个属性,会在列标题那里显示一个排序按钮...设置此列是否隐藏 @property (getter=isHidden) BOOL hidden; //设置此列所有数据载体视图 如果设置 默认为NSTextFieldCell @property...如果我们要对Cell渲染进行一些定制,可以如下方法中实现: //将要渲染cell调用方法 开发者可以拿到cell对象做定制 - (void)tableView:(NSTableView *)tableView...nil 如果这时返回了Cell,则此Cell宽度会覆盖整个列表 使用时要多加注意 */ - (nullable NSCell *)tableView:(NSTableView *)tableView...NSTableColumn *)tableColumn row:(NSInteger)row; /* 当用户修改了排序规则时调用回调 */ - (void)tableView:(NSTableView

4.7K21

重拾swift版本MVP

也就是说咱们想使用就要遵循这个契约…… 接下来我们来做一些基础性事情: 到目前为止我们看到所有的都是不能实例化协议。那么MVP我们从哪个开始入手呢?...… 万事具备,下面我们看看怎么完成一个简单MVP流程……展示流程时候我们先看看基本项目结构 ?...(_ notification: Notification) { } } Presenter比较复杂啦,除了需要对VIew进行绑定,同时需要对UI进行一些数据初始化...,在这里简单代码 protocol MainMenuViewControllerContract: Contract where View == MainMenuViewController ,Presenter...== MainMenuPresenter {} 我们让Presenter IView知道了各自具体类型,然后将P V进行绑定穿插完成一个基本MVP闭环…… 最后让我们看看显示结果完成咱们今天小实例

84840
  • jQuery 表格插件汇总

    本文搜集了大量 jQuery 表格插件,帮助 Web 设计者更好地驾御 HTML 表格,你可以对表格进行横向和竖向排序,设置固定表头,对表格进行搜索,对大表格进行分页,对表格进行滚动,拖放操作等等。...这些插件很多都包含详细教程。希望能对大家开发有帮助。 jQuery 表格插件 ?...Ingrid, the jQuery Datagrid - HTML 表格上加入列宽调整,分页,排序,行列式样等功能(演示)。 ? ? JQTreeTable - 表格中加入树形结构 ? ?...Table Drag and Drop - 通过拖放,对表格中数据重新排列,可以设置禁止拖放。 ? ? Table Pagination - 表格下方自动生成分页导航。 ? ?...Colorize - 自动对表格间隔行使用不同背景颜色 ? ? jExpand - 一个非常轻量 jQuery 插件,可以展开/关闭表格单元格,使表格可以容纳更多内容。 ? ?

    7.5K10

    Android Studio 中 System Trace 新增功能

    Android Studio 4.1 Beta 1 中 System Trace 界面 您可以通过简单拖拽将某一区域或者区域内某个元素进行向上或向下移动来重新组织列表。...默认情况下,我们根据线程繁忙程度对其进行排序,但是您也可以拖放任意一个线程以对其重新排序。 ? 拖放线程来改变列表顺序 您也可以通过单击三角形图标或双击线程名称来折叠或展开每个线程。...使用范围选择器来专注于时间轴一小部分 在这里您可以进行更加精细导航操作: 使用 Ctrl ( Mac 上为 Cmd) + 鼠标滚轮进行缩放; 按住空格键同时左右拖动鼠标可平移视图; 使用 "WASD...您甚至可以跨越多个线程执行选择操作,这个特性您把相似线程拖放到一起进行检视时十分有用。举例来说,您也许会想对多个辅助线程进行分析,而这种场景游戏开发中很常见。 ?...举例来说,当您选择了一个线程时,该线程状态与其他一些有用信息就会被显示出来。 我们希望 Analysis Panel 能对您有所帮助,所以我们一直探索使用各种形式来展示这些有用分析数据。

    2.7K50

    Jekyll-Admin-Mac-列表

    6E7EFC46-9753-4F4A-B497-1CE2C5FCBCD2 因为名字长度是固定,我们就设置 NSTableView第一个 Column宽度随着 NSTableView宽度变化。...但是如果在方法执行完毕才执行 闭包我们就需要用 @escaping标识,这样系统自动调用时候提示用户对于直接使用 self进行内存管理。...但是现在有一个问题就是我们配置数据子数据里面。 我们需要使用 Path进行获取,我们就为 BaseRequestApi设置一个属性可以让外接设置 Path。...那要你需要实现搜索到什么程度。 参考资料: 关于搜索出来内容根据权重进行排序。 我们做先做一个简单版本,就直接匹配就好了。 我们给 BaseListView增加一个搜索过滤之后数组。...models时候进行重新设置 filterModels。

    3.2K10

    Jekyll-Admin-Mac 开发纪要-左侧菜单栏

    设置 autoresizingMask属性 修改 NSWindow最小显示区域 去掉 NSTableView边框 NSTableView使用 View Base试图 OSX使用 `font-awesome...宽度是固定,但是高度固定,我们使用自动布局。 ? 最上线显示 Logo地方大小为 205x75。我们采用 NSImageView。我们采用如下布局。 ?...⚠️我们发现我们图片是正常显示出来了,但是背景颜色无法显示。那是因为 OSX开发和 iOS不太一样。对于正常 NSView, NSImageView是无法进行设置背景颜色。...故而强行当做存在使用崩溃了。 到目前为止,我不清楚这个对象没有初始化是为什么导致。但是只是 Xib进行初始化 IBDeisgnable抱错,但是可以正常运行。...Keys无法作为正常 Array使用,我们需要用 Array()对其进行初始化。

    2.1K10

    一步一步,开始上手Mac 开发(一)

    一个Mac app 基本结构 3.  Mac OSX开发与iOS开发不同 4. 怎样使用Table Views (比如添加或者删除) 5....Mac中,这个控件叫做NSTableView(类似iOS中UITableview)。...可能你已经意识到了,iOS中你熟知许多UIKit控件,就是脱生于Mac OSX AppKit,只是把原来Mac OSX中NS前缀改为UI前缀而已,因此,多数情况下,你iOS中经常用控件基本上...OSX中table view 控件是NSTableView,它类似iOS中UITableView,不同NSTableView(row)中可以有很多列(column) 1.20 选中table...通常情况下,table view数据源和代理都是控制器),这一步可以通过代码设置,也可以xib图形界面中设置: ?

    4.1K40

    前端10大开源拖拽排序库汇总, 让搭建,更简单

    「API」 将目标组件进行包裹,即可实现拖动或接受拖动元素功能。...Sortable 「Sortable」 —是一个「JavaScript」库,用于现代浏览器和触摸设备上对拖放列表进行重新排序。无需「jQuery」。...它提供了一个视觉效果引擎,一个拖放库(包括可排序列表),几个控件(基于「Ajax」动态下拉列表,原地编辑,滑块)等等。...有很多库允许React中拖放交互. 其中最值得注意是惊人「react-dnd」. 它提供了一套非常出色拖放函数,这些函数特定情况下非常适用疯狂地不一致html5拖放功能....「react-beautiful-dnd」 是为垂直和水平列表专门构建更高级别的抽象. 该功能子集内「react-beautiful-dnd」提供强大,自然和美丽拖放体验.

    5.7K21

    整理了12款开源拖拽库, 轻松上手可视化搭建

    「API」 将目标组件进行包裹,即可实现拖动或接受拖动元素功能。...Sortable 「Sortable」 —是一个「JavaScript」库,用于现代浏览器和触摸设备上对拖放列表进行重新排序。无需「jQuery」。...它提供了一个视觉效果引擎,一个拖放库(包括可排序列表),几个控件(基于「Ajax」动态下拉列表,原地编辑,滑块)等等。...有很多库允许React中拖放交互. 其中最值得注意是惊人「react-dnd」. 它提供了一套非常出色拖放函数,这些函数特定情况下非常适用疯狂地不一致html5拖放功能....「react-beautiful-dnd」 是为垂直和水平列表专门构建更高级别的抽象. 该功能子集内「react-beautiful-dnd」提供强大,自然和美丽拖放体验.

    1.1K20

    dragula插件web端和移动端拖拽排序

    : 设置非常简单 没有外部依赖 可以自动对数据进行排序 被移动项带有半透明视觉效果 支持移动触摸设备 兼容性好,支持IE7+所有现代浏览器 安装 可以通过bower或npm来安装该元素拖放插件。...npm install dragula –save bower install dragula.js –save 使用方法 该元素拖动插件提供了一个最简单API来让你可以页面中拖放元素。...) 默认情况下,dragula允许用户containers中拖动一个元素,并将元素放置到containers列表其它容器中。...设置revertOnSpill为true将确保元素拖放到容器之外时会被重新放置会拖放开始位置。...事件 8. drake.end( ):使用最后位置预览阴影标记最为拖放目的地拖放元素。相应cancel或drop事件将被触发。

    2.4K10

    最新iOS设计规范四|3大界面要素:视图(Views)

    这些任务总是首先出现在活动视图中,无法重新排序。你不必为执行这些内置任务而去创建自定义活动。活动视图还显示其他APP共享和操作扩展。 ? 设计简单模板图像来展示自定义活动。...虽然系统提供任务无法活动中重新排序,但如果它们不适用于你APP,则可以将其屏蔽。例如:要阻止用户打印图像,你可以屏蔽“打印”活动。您还可以定义在给定时间内显示哪些自定义任务。...默认情况下,你可以点按以选择、触摸并按住进行编辑,然后滑动进行滚动。 如有需要,还可以添加更多手势来执行自定义操作。集合中,插入、删除或重新排序项目,都可以启用动画,并且还支持自定义动画。...所以如果你需要在一个屏幕中放置两个滚动视图时,尽量考虑允许它们不同方向进行滚动,如此可能对其相互间影响是最小。...使用网页视图让用户不离开APP当前页情况下,短暂地访问网站很好,但Safari是用户iOS上浏览网页主要方式。所以在你APP中提供与Safari相似的功能没有必要,而且也鼓励这样做。

    8.4K31

    WPF是什么_wpf documentviewer

    例如,单击列标题来给某一列内容进行排序。 注意: GridView给列标题使用Button控件就是ButtonBase派生类。...默认情况下,每个列都会调整其宽度以适应其内容。当然,你也可以为其设置固定宽度。相关数据内容显示水平行中。...与GridView进行用户交互 当你程序中使用了GridView时,用户可以与GridView交互并修改其格式。例如,用户可以重新排序列(拖动表头使整列移动)、调整列大小、选中表中项和滚动内容。...你还可以定义用户单击列标题时响应事件处理程序。事件处理程序可以执行类似于根据列内容对显示GridView中数据进行排序操作。...下面列表详细讨论了使用GridView进行用户交互功能: 通过拖放对列重新排序 当光标位于表头上时,用户可以按下鼠标左键,然后将该列拖动到新位置,从而对GridView进行重新排序

    4.7K20

    drag事件详解:html5鼠标拖动排序及resize实现方案分析及实践

    对列表进行拖动排序,尺寸改变。之前一般会使用jQuery-UI(interactjs更加纯粹)。其通过mousedown、mousemove、mouseup这三个事件来实现页面元素被鼠标拖拽效果。...图片和链接按住鼠标左键选中,就可以拖放。文本只有在被选中情况下才能拖放。如果显示设置文本draggable属性为true,按住鼠标左键也可以直接拖放。...进行放置针对对象事件名称说明被拖动元素dragstart元素开始被拖动时候触发drag元素被拖动时反复触发dragend拖动操作完成时触发目的地对象dragenter当被拖动元素进入目的地元素所占据屏幕空间时触发...如果拖动操作涉及拖动文件,此属性是一个空列表。dropEffect获取当前选定拖放操作类型或将操作设置为新类型。...如果给定类型数据不存在,此方法执行任何操作。如果不给定参数,则删除所有类型数据。

    6.3K21

    实战教学--怎样提高报表呈现性能?

    数据准备问题和优化 报表中展现数据大部分情况下并不是从数据来源中直接取就可以,大都需要经过计算处理加工,准备好以后,才能被报表工具来使用 这些数据准备,多数是用SQL或存储过程来做,一些涉及库外数据来源和计算...,简单情况下,很多商用数据库确实都能优化,使用不必大排序算法,性能通常也很好,但情况稍微变复杂一些,比如要在每个分组中取前 10 名,要用到窗口函数和子查询,这时候优化器就又无能为力了,又得乖乖去大排序...SPL实现了高效算法后,SQL无法解决性能问题中,可能获得数倍以至数十甚至上百倍性能提升 到这里我们可能会想,解决个性能问题还得把原先SQL甚至是存储方式都舍弃,全部用新SPL重新做,这也太费劲了...,大头已经解决了,不过还是有些报表性能问题出在后面的环节中,我们来看下,后两个环节是报表内计算和呈现 先看计算 报表内计算,首先要看报表工具基本,另一方面也要看外围计算引擎,基本好,可以保证大部分表内计算都不出问题...,但是计算复杂度却是平方级,数据量不大时,都没问题,数据量稍大时,到几千,那性能就会急剧下降了,再好工具处理这样运算也会有问题 但如果把这个关联放到报表外来做,利用外部计算引擎计算能力,可以使用低复杂

    36820

    无需编码,使用KNIME构建你第一个机器学习模型

    对初学者来说,有太多东西需要同时学习是机器学习面临最大挑战之一,特别在你不知道如何编码情况下。如果你没有过编写代码经验,那么你可以使用GUI驱动工具开始学习数据科学。...这篇文章将首先介绍一个基于GUI工具-KNIME。到本文结束时,你将能够编写代码情况下预测零售商店销售情况。 ? 为什么选择KNIME?...节点(Node):节点是任何数据操作基本处理点。它可以根据你工作流程中选择内容进行多种操作。 工作流(Workflow):工作流是你平台上完成特定任务步骤或操作序列。...这将帮助你选择那些重要特性,并通过特定储存格上悬停(hover)来获得更好预测。接下来,我们将对数据集范围和模式进行可视化,以便更好地理解它。...我们对测试数据进行清洗之后,我们将引入一个新节点“Regression Predictor(回归预测器)”。 ? 通过将learner输出与预测器输入连接起来,将模型加载到预测器中。

    7.3K70

    A Better Finder Rename 11 Mac(批量文件重命名软件)

    操作简单,可快速地同时更改多个文件名称,支持音乐、图片和文件批量重命名,而且命名可以按照名称修改时间什么排序,按照时间排序某些情况下很有用。...图片A Better Finder Rename 11 Mac(批量文件重命名软件)a better finder rename mac软件功能简单、完成、强大拖放到添加添加文件就像从Finder中拖入文件一样简单...即时预览您键入时会预览更改,从而消除猜测工作并防止代价高昂错误。拖放默认情况下,项目按字母顺序或按照创建或捕获日期等其他条件进行组织,但您也可以通过拖放操作重新排列项目。全面覆盖市场领先功能集。...更好Finder Rename还可以优雅地处理同一秒内拍摄多个镜头,并通过其基于标签重命名功能访问相机和镜头元数据。...更好Finder重命名允许您利用此元数据使用其基于标记重命名功能创建更有意义文件名。

    2.8K30

    庖丁解词:一键分词 自由重组

    庖丁解词主要将一段文本拆分为具有语义文字块,用户选取感兴趣语义块后,可以对语义块进行增加、删除和拖放排序等操作,也可对重组后文字进行复制、分享和收藏等操作,从而形成文字处理闭环。...没有庖丁解词情况下,小王需要找到之前会议主办方发密密麻麻一段文字(掺杂了寒暄语句、会议时间地址等),然后全选-->复制--> 粘贴到输入框,并小心翼翼地删除冗余文字,调整词语先后顺序,然后再点击发送...2)自由重组 痛点:移动设备上聊天窗口往往只能对文本进行整块操作,无法对部分文字进行添加、删除或者拖放排序等重组操作。...创新:庖丁解词一键分词后,为用户提供了添加、删除、拖放排序等功能,使用户随心所欲编辑文本。...接下来会将庖丁解词抽离出组件,此组件不仅可以企点上使用,还可以集成到腾讯其他需要进行文本操作应用中,比如QQ和微信等。 目前,IOS和Android 没有使用相同分词算法。

    1.2K40

    Intellij IDEA 2019 debug断点调试技巧与总结详解

    字段断点 除了条件断点之外,您还可以使用字段断点。当访问某个字段以进行读取或写入时,这些断点将停止。...在这种情况下,您可以通过按下 Shift+F7 选择一个特定方法进行智能化。这样操作能够很好节省时间。...运行到光标 有时您需要恢复程序并在另一代码中停止,而添加另一个断点。要达到这样要求很简单:只需要按 Alt+F9 就可以了。...,以便您可以对其进行评估: IntelliJ IDEA计算表达式 IntelliJ IDEA计算表达式 重新加载更换和热交换 有时候,您需要在不关闭进程情况下在代码中插入小更改。...而这个功能对操作则是服务配置里 Resume Program (F9):恢复程序,比如,你第20和25有两个断点,当前运行至第20,按F9,则运行到下一个断点(即第25),再按F9,则运行完整个流程

    5.3K41
    领券