第一个 OS X 应用程序

作者: Cyandev | 来源:发表于2016-05-13 14:32 被阅读1435次

    国内做 iOS 开发的开发者很多,但是 OS X 开发者数量却远远不及。与此同时,有关 OS X 开发的文章和参考资料也十分少,自学起来比较困难,所以我决定在这个文集中记录一些 OS X 开发的点滴。

    第一篇我们来点简单的。

    建立项目

    首先启动 Xcode,选择新建项目,项目模板当然就是 OS X Application 啦


    下面是选择使用的语言和一些技术,我这里比较推荐大家选择 Swift 语言,当然你也可以使用你熟悉 Objective-C,然后勾选 Use Storyboards 选项,因为使用 Storyboard 可以极大地提高你的开发效率。

    What's in Storyboard

    打开 Main.storyboard 文件,我们看看里面有什么内容。

    OMG,感觉好复杂,有三个视觉元素:主菜单、窗口、视图。这些分别都是什么鬼?

    我们知道每个 OS X 应用都有一个单独的菜单,那么最上面的菜单就是整个应用显示在状态栏上的主菜单。

    接下来是窗口,我们可以看到窗口左侧有个箭头,这个箭头的意思是,该窗口是启动窗口,也就是当应用一启动,这个窗口就会出现。

    再往下是视图,它表示了窗口所显示内容,你完全可以把它当做 iOS 的 ViewController。我们可以将窗口和视图之间的关联去掉,这样窗口就什么内容都没有了。但是启动时窗口还会显示。但如果将窗口左侧的箭头去掉(取消选择检查器中的 Is Initial Controller 选项),那么程序启动时就什么都不会出现了。

    下面我们去掉默认启动的窗口,来看看如何用代码控制一个窗口的显示。我们转到 AppDelegate.swift 中,可以看到下面几个声明周期函数:


    当应用程序启动之后,applicationDidFinishLaunching(:_) 函数就会被调用,与 iOS 稍有不同的是,我们必须要设置一个 StoryboardXib 作为启动界面,因为这个启动界面中含有程序依赖的 NSApplication 对象,如果没有设置,那么这两个周期函数就不会执行。
    启动界面设置

    既然我们已经将 Main.storyboard 作为启动界面了,那么我们就可以在上面的周期函数中拿到要显示的窗口,并显示它。

    不得不吐槽一下 Cocoa 的 API 设计,显示窗口的函数竟然叫这么个名字...
    可以看出基本都是套路,首先拿到 Storyboard ,然后用标识符来实例化一个控制器,得到的 WindowController 先调用一下 showWindow(:_),然后调用它所控制的窗口的 makeKeyAndOrderFront(:_) 方法,这样窗口就显示了。

    Hello, world!

    下面我们在窗口视图里放点东西:


    然后建立 Outlet,这点和 iOS 是一样的。

    创建一个新的视图控制器:


    拉线建立一个 Segue,我们要在点击按钮时以 Sheet 的样式显示这个视图。
    再拉线将 "Dismiss" 按钮与 dissmissController 动作绑定。

    这里有个小细节,默认按钮如何设置?在以前的 OS X 版本中,默认按钮就是蓝色闪闪发光的那个样子。我们想将 "Dismiss" 按钮设置为默认按钮,就需要将其快捷键设置为 Return 键,没错就是这样😂


    设置完后我们就会发现这个按钮变成蓝色了。

    响应按钮点击事件:


    运行一下看看效果:


    OK,今天就先写这么多了~

    相关文章

      网友评论

      • 火锅麻辣烫wz:很珍贵的小教程,持续关注
      • 我真是小菜鸟:我想问一下,怎样能不用xib直接创建window?就像iOS那样设置window.rootviewcontroller!谢谢!
        Cyandev:@群狼_战狼 对的,你可以对比一下 main 函数,iOS 的 UIApplicationMain 传递了一个 AppDelegate 的 class,这样系统负责创建 UIApplication 并且绑定 delegate,而 OS X 的则需要你自己创建 NSApplication,你创建的方式只有在 xib 里拖一个 Application 对象。
        我真是小菜鸟:@Cyandev 也就是说一定要有一个xib文件,是这样的意思吗?
        Cyandev:@群狼_战狼 xib 里至少需要有一个 Application,然后在 AppDelegate 里直接创建 window,然后 orderFront 就行了。

      本文标题:第一个 OS X 应用程序

      本文链接:https://www.haomeiwen.com/subject/pcxmrttx.html