国内开发iOS应用程序的很多,有关iOS方面的开发资料及源码也很多,然而关于开发MAC OS X应用程序的教程和资料却很少,最近时间比较多,将会长期更新MAC OS X应用开发教程。
1.创建工程


2.MACOS storyboard内容简介
由主菜单、窗口控制器、视图控制区组成,和开发iOS移动应用程序差别很大。这里的视图控制区和iOS开发的ViewController类似

3.下面开始创建一个小实例。
会简单用到NSTextField,NSComboBox,NSButton,NSTextView。这里跟大家说一下,MACOS里的显示的label,其实质依旧是NSTextField,拖拽进视图控制器里的“姓名”、“年龄”、“性别”是NSTextField和姓名右边的NSTextField一样,不过表现形式不一样,这和我们理解的iOS完全不同。iOS对应的UILabel,macOS并没有NSLabel。依次拖入对应控件到视图控制器,如下图

4.storyboard上的控件与ViewController.swift文件连线,这和iOS一样,有IBOutlet和IBAction之分。代码如下
import Cocoa
let on = 1//开
let off = 0//关
class ViewController: NSViewController {
var num=1
@IBOutlet weak var nameTextField: NSTextField!
@IBOutlet weak var ageCombox: NSComboBox!
@IBOutlet weak var manBtn: NSButton!
@IBOutlet weak var womanBtn: NSButton!
@IBOutlet var resultTextView: NSTextView!
override func viewDidLoad() {
super.viewDidLoad()
nameTextField.resignFirstResponder()
addCombox()
}
@IBAction func submitPersonalMessages(_ sender: Any) {
resultTextView.string="姓名" + nameTextField.stringValue + "\n"
+ "年龄:" + ageCombox.stringValue + "\n"
+ "性别:" + sexValue()
}
func sexValue() -> String {
if manBtn.state == on {
return "男"
}else{
return "女"
}
}
@IBAction func chooseMan(_ sender: Any) {
if womanBtn.state == on {
womanBtn.state = off
}
manBtn.state=on;
}
@IBAction func chooseWoman(_ sender: Any) {
if manBtn.state == on {
manBtn.state = off
}
womanBtn.state=on;
}
func addCombox() {
repeat{
ageCombox.addItem(withObjectValue: num);
num += 1
}while num<=50
ageCombox.stringValue="25"
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
}
5.运行之后填写姓名、年龄、性别,如下图:

6.点击“提交个人信息”按钮,显示结果:如下图

源码-->:github
网友评论
不过有一点歧义,at: 24 应该指的是 下拉框里第24位的值,如果要指定默认值还是使用ageCombox.stringValue="25" 较好。
同样的 ageCombox.scrollItemAtIndexToTop(24) 是将第24位值排在最顶端
ageCombox.scrollItemAtIndexToTop(24)