首页 > 其他分享 >Chapter 12 - NSWindowController

Chapter 12 - NSWindowController

时间:2022-11-22 15:00:49浏览次数:50  
标签:Chapter 12 NSWindowController 实现 undo value 书上 redo NSPersistentDocument

文章是基于之前的RaiseMan的例子修改的。为了避开申明Person类型和复杂的手动实现value key & value & remove & add的redo/undo,所以本例子采用CoreData + ArrayController + NSPersistentDocument,至于如何编译xcdatamodeld文件,请参考之前的文章。项目Resource文件夹下应该如图所示:

 

 关于绑定,请参考之前的Chapter 11中的文章。除此之外,其余代码和书上一样,由于NSPersistentDocument只是默认实现了值的undo/redo,所以要手动实现remove/add的undo/redo。既然要手动实现,就实现可多选的redo/undo吧。

Employees.xcdatamodeld内容

 

 

AppController.cs 这个和书上有点区别,我让此继承于NSArrayController,这样方便我实现CoreData的NewObject属性。其次,菜单Preference项的实现,关联到showPreferencePanel(和书上一样)。如图。

 

 PreferenceController.cs和书上一样,独立的xib窗口。如图。

 

 

 关联这些,之后都不说了,学到这里,看看书和代码,基本可以搞定。除非有特殊的关联,会单独提出来讲。

RMDocument.cs,即使实现remove/add的redo/undo的,利用默认的key & value的redo/undo实现。代码如图。

 

 

 

 obj_msgSend导出,必须这样实现,不然会报错。之前的文章已经说了,是微软的bug,至今未修复。

 

 Add Employee按钮的实现 (this.Add之后单独贴,是redo/undo的实现)

 

 Remove按钮的实现

 

Add私有函数实现(记住添加导出名,方便redo/undo调用)

 

 Remove私有函数实现

 

其余和书上一样,这样做省去了Person class的声明,省去了value + key的Oberve,利用NSPersistentDocument的部分默认redo/undo。

好了,看看测试结果

 

 

 删除3和1

 

undo一下 

 

 redo一下

 

标签:Chapter,12,NSWindowController,实现,undo,value,书上,redo,NSPersistentDocument
From: https://www.cnblogs.com/dalgleish/p/16915146.html

相关文章

  • template(12)
    templatetemplate功能:根据模块文件动态生成对应的配置文件template文件必须存放于templates目录下,且命名为.j2结尾yaml/yml文件需和templates目录平级,目录结构如下:......
  • template流程控制for和if(12)
    template流程控制for和iftemplate中也可以使用流程控制for循环和if条件判断,实现动态生成文件功能for当我们需要创建如下类型的文件时server{listen80}server{......
  • 20221122 常用MySQL查询
    查询版本selectversion();查询表名和表注释selectTABLE_NAME,TABLE_COMMENTfromINFORMATION_SCHEMA.Tableswheretable_schema='daoancomp';查询表字段和注......
  • 如何修改服务器的用户名和密码Windows2008/2012
    在我们刚拿到服务器的时候密码都是系统随机生成的初始密码,所以这时候我们一般第一时间拿到服务器应该为了安全起见先修改服务器密码以免密码泄露避免发生一些没必要的事情。......
  • 【华为OJ12】字符串反转
    题目描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。例如:importjava.util.Scanner;publicclassMain{publicstaticStringreverseStr(String......
  • 前端012-css-后台布局1
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>css后台布局</title><style>body{margin:0}/*去掉边框,*/.page-heade......
  • TM4C123G学习记录(4)--关于ROM前缀函数和HWREG函数
    为了准备电赛临时学一下TM4C123G,简单记录学习内容大家可以在​​这里​​下载我收集的资源,非常全面,花了很大功夫收集来的,还有书籍、例程代码等还可以在TI官网下载相关文档​......
  • TM4C123G学习记录(3)--外部中断
    为了准备电赛临时学一下TM4C123G,简单记录学习内容大家可以在​​这里​​下载我收集的资源,非常全面,花了很大功夫收集来的,还有书籍、例程代码等还可以在TI官网下载相关文档​......
  • TM4C123G学习记录(2)--GPIO
    为了准备电赛临时学一下TM4C123G,简单记录学习内容大家可以在​​这里​​下载我收集的资源,非常全面,花了很大功夫收集来的,还有书籍、例程代码等还可以在TI官网下载相关文档​......
  • TM4C123G学习记录(1)--时钟
    为了准备电赛临时学一下TM4C123G,简单记录学习内容大家可以在​​这里​​下载我收集的资源,非常全面,花了很大功夫收集来的,还有书籍、例程代码等还可以在TI官网下载相关文档​......