根据之前的代码,做了调整。把所有控件的初始化放在ViewController.cs文件中,把所有delegate和逻辑代码单独放一个cs文件中。

新增NSTableView,暂时不通过xcode delegate对应的类。直接手动实现。

NSTableViewDataSource子类(主要负责更新表格数据):

如果不想让TableView显示全名称,代码如下。C#把NSVoiceName这个enum类型改成了对应的string,可以遍历dict的key得到对应的属性名。

            var dict = NSSpeechSynthesizer.AttributesForVoice(NSSpeechSynthesizer.AvailableVoices[row]);
            return dict.ObjectForKey(NSObject.FromObject("VoiceName"));

NSTableViewDelegate子类(主要负责Event的处理),需要注意SetVoice在Cocoa中是protected成员函数,所以采用强行调用的方法:

NSSpeechSynthesizerDelegate子类(和之前的代码一样,没有做修改):

然后就是ViewController.cs中的初始化

附上Xcode布局调整

最后上测试图。

 

posted on 2022-08-09 10:43  dalgleish  阅读(161)  评论(0编辑  收藏  举报