对于习惯了纯代码iOS开发的人来说,刚接触Mac端开发时,是非常不友好的,网上所有的教程都是通过Xib或StoryBoard的方式创建NSViewController,而且苹果文档也是鼓励用Xib的开发进行Mac 开发,但对于纯代码开发也给了补救方式,现在给大家分享一种可以直接代码创建的方式。

  Apple Document:

If you pass in a nil for nibNameOrNil then nibName will return nil and loadView will throw an exception; in this case you must invoke setView: before view is invoked, or override loadView.

  翻译如下:

如果为nbNameOrNil传递nil,则nibName将返回nil,并且loadView会引发异常;在这种情况下,您必须在调用视图之前调用setView:,或重写loadView。

  如果不补救,对于通过JFProgrammaticallyViewController()创建的控制器,会报如下错误:

 -[NSNib _initWithNibNamed:bundle:options:] could not load the nibName: CodeCreateUiDemo.JFProgrammaticallyViewController in bundle (null).

  废话少说,上代码:

import Cocoa
import SnapKitclass ViewController: NSViewController {var button : NSButton!override func viewDidLoad() {super.viewDidLoad()button = NSButton(frame: CGRect(x: 0, y: 0, width: 100, height: 100))button.wantsLayer = truebutton.layer?.backgroundColor = NSColor.red.cgColorbutton.title = "click"button.target = selfbutton.action = #selector(clickAction(sender:))self.view.addSubview(button)}@objc func clickAction(sender:NSButton) {let programmaticallyVC = JFProgrammaticallyViewController()self.presentAsModalWindow(programmaticallyVC)}override var representedObject: Any? {didSet {// Update the view, if already loaded.}}}//纯代码创建的ViewController
import Cocoaclass JFProgrammaticallyViewController: NSViewController {var mView : NSView!//这一端是重重之中,对于无法通过Nib加载view,就要通过loadView()方法来进行补救,override func loadView() {self.view = NSView(frame: CGRect(x: 0, y: 0, width: 400, height: 300))}override func viewDidLoad() {super.viewDidLoad()mView = NSView(frame: NSRect(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height))mView.wantsLayer = truemView.layer?.backgroundColor = NSColor.red.cgColorself.view.addSubview(mView)}}

  运行如下图;

【Swift Mac开发】纯代码创建NSViewController相关推荐

  1. ios14.3开发之使用纯代码创建UITabbarController

    ios14.3开发之使用纯代码创建UITabbarController 这里我们IOS版本14.3.Xcode 版本选择的是.12.3版本:来自apple最新的xcode版本,该版本支持最新的swif ...

  2. IOS14.3开发之使用纯代码创建UIButton以及弹框的使用

    IOS14.3开发之使用纯代码创建UIButton以及弹框的使用 源码在这 // // ViewController.m // testDemo1 // // Created by 鲁军 on 202 ...

  3. Swift5.x使用纯代码创建NavigationTab控制器设置启动图Wb第1部分

    Swift5.x使用纯代码创建NavigationTab控制器设置启动图Wb第1部分 前言 1 使用纯代码创建NavigationTab控制器必须会,也可使用storyboard拖控件,没有代码创建灵 ...

  4. iOS回顾笔记( 01 )-- XIB和纯代码创建应用的对比

    iOS回顾笔记( 01 )--  XIB和纯代码创建应用的对比 很多时候我们工作很久突然闲下来的时候,是不是也感到无聊过?这就是我现在的生活,不过闲一段时间也挺好,可以好好回顾一下自己以前学习iOS路 ...

  5. IOS基础之使用UICollectionView纯代码创建

    IOS基础之使用UICollectionView纯代码创建 资料来自2016-5-12某站. 有一定的参考意义, 涉及plist 转字典模型,UICollectionView使用纯代码加载到View里 ...

  6. Unity3D开发之代码创建圆柱体

    看到这篇文章你可能好奇unity自带圆柱体组件,直接就可以生成,为什么我们还要用代码生成.其实是最近领导对项目有一个要求,就是我们要在自写编辑器内操作圆管,也就是圆柱体.功能类似3DMax里的拉伸管线 ...

  7. Qt文本编辑器开发------纯代码实现

    目录 前言 项目分析 项目效果 项目流程 1. 先设置好文本编辑框的大小与名称 2.创建输入处理框 3.创建菜单栏 4.创建菜单按钮下的动作按钮 5.创建与动作按钮对应的槽函数 6.附件功能的实现 7 ...

  8. 【Swift Mac开发】自定义NSTableView选中行背景

    由于使用的是基于视图的NSTableView,因此可以将NSTableRowView子类化,将其提供给表委托方法- (NSTableRowView *)tableView:(NSTableView * ...

  9. iOS 使用纯代码或xib创建圆角视图

    尊重原创 转自:http://www.jianshu.com/p/80f1fd3f63a0 引言: 在我们日常开发中, 很多中情况下我们需要设置UIView或者UIImageView的圆角以及边框等, ...

最新文章

  1. DNS服务,A记录,URL转发,MX记录,NS记录,CNAME记录,解释与设置教
  2. 将ArrayList保存到SharedPreferences
  3. wsl子系统添加开机启动任务
  4. Anolis 安装图解
  5. js二级下拉被flash档住的解决办法
  6. 微服务feignclient_搞微服务用阿里开源的 Nacos 真香啊
  7. 解决hibernate双向关系造成的一方重复执行SQl,或者死循环的问题
  8. 支付宝一项重要服务突然改名!官方:已启动品牌隔离,服务不受影响
  9. go语音protobuf_总结一下protobuf安装-Go语言中文社区
  10. linux下的chromedriver驱动器配置实例(含代码)
  11. Connection reset问题,INFO: I/O exception (java.net.SocketException) caught when processing reques
  12. Interface的精髓——《Thinking in Java》随笔025
  13. docker制作容器(待更新)
  14. 《大学计算机基础》试题题库及答案
  15. Foxit PDF Creator注册码
  16. 《电脑音乐制作实战指南:伴奏、录歌、MTV全攻略》——2.2 能知旋律但不知歌名,使用哼唱搜索来找歌...
  17. 网络存储NAS网络存储器术语解释
  18. 2022年贵州省职业院校技能大赛中职组网络安全赛项规程
  19. android开发之高仿中国建设银行App
  20. storm是java还是python_Storm概念学习系列之什么是实时流计算?

热门文章

  1. Linux生态之深度学习环境
  2. 【python爬虫】爬取QQ空间说说
  3. 虚幻4蓝图实现昼夜交替
  4. 俄罗斯方块游戏及排行榜——c语言
  5. 绑定ARP 保存ARP ARP 项添加失败: 拒绝访问。
  6. 歌谣学前端之react之第一个helloworld程序
  7. 【代码随想录】二刷-数组
  8. NTSTATUS 状态码
  9. W3C 代码标准规范
  10. 异常检测:Towards Total Recall in Industrial Anomaly Detection