Chapter 08 – RaiseMan (C# 实现 + Cell-based tableview绑定)


这个代码主要展示如何绑定Array Controller到Cell-based Tableview。在发代码前,需要注意几点。

1. Person为自定义的class,但是一定要Register为PersonModel。 格式{自定义class}Model。

2. NSMutableArray对象,一定要Export为personModelArray。格式{从1. 中得到的注册类}Array。之后的所有setter & getter 都要基于这个Export后的名称。别问我为啥知道,我吖的摸索了1个星期,疯狂修改微软的例子+看文档,终于发现还有这等潜规则。我开始逐渐明白国内为啥C#的培训机构那么少了,原来很多东西,就是有文档,还不一定能搞定。慢慢摸索吧,希望能把这本objective-c cocoa的书成功翻译成C#的入门教程。

不遵循1和2的,程序必定报错。其余的按照书上的布局xcode和绑定就行了。微软只在文档里说明了第二点,第一点压根就没说。害我真的是逐句代码排除,终于发现,注册和导出名称都要遵循潜规则。

Xcode下Array Controller的自定义类

Chapter 08 - RaiseMan (C# 实现 + Cell-based tableview绑定)Chapter 08 - RaiseMan (C# 实现 + Cell-based tableview绑定)

 

Cell-based的tableview 绑定(下一章会用view-based tableview来绑定,两者方法不同)。图中第一个Content Mode记住改成Cell-based。这类Tableview可以利用Array Controller中默认的add & remove action。而且可以自定义NSTableViewDataSource & NSTableViewDelegate.

Chapter 08 - RaiseMan (C# 实现 + Cell-based tableview绑定)Chapter 08 - RaiseMan (C# 实现 + Cell-based tableview绑定)

Cell-based tableview不用绑定Table View中的Content Array,直接绑定对应Colum的Value就行了。如图。

Chapter 08 - RaiseMan (C# 实现 + Cell-based tableview绑定)

然后按照书上的教程,拖拽两个按钮到Array Controller(记住按ctrl + 鼠标左键)。会有对应的add 和 remove绑定。之后,绑定Remove按钮的enable属性到Array Controller的状态。

Chapter 08 - RaiseMan (C# 实现 + Cell-based tableview绑定)

好了,开始上源代码。

Person类。注意我放在开头的第一点!!下面是cs.designer 文件中内容。

Chapter 08 - RaiseMan (C# 实现 + Cell-based tableview绑定)

Person.cs

Chapter 08 - RaiseMan (C# 实现 + Cell-based tableview绑定)

Chapter 08 - RaiseMan (C# 实现 + Cell-based tableview绑定)

这个例子没有采用NSDocument (xib),下一个view-based Tableview绑定会用。为了测试,我就简单放在了ViewController.cs中。

Chapter 08 - RaiseMan (C# 实现 + Cell-based tableview绑定)

Chapter 08 - RaiseMan (C# 实现 + Cell-based tableview绑定)

最后看下测试图。恭喜我又成功把一个objective-c程序翻译成了C#。

Chapter 08 - RaiseMan (C# 实现 + Cell-based tableview绑定)Chapter 08 - RaiseMan (C# 实现 + Cell-based tableview绑定)

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/280894.html

(0)
上一篇 2022年8月16日
下一篇 2022年8月16日

相关推荐

发表回复

登录后才能评论