分类目录归档:swift

swift os x开发 创建一个工具条

增加一个工具条实现起来相对比较简单。最终效果如下图:
屏幕快照 2015 10 08 下午7 56 06

1、从Xcode右下角的object library里拖一个Toolbar到IB的窗口中。
2、在拖进去的Toolbar上双击,弹出一个窗口。如下图:
屏幕快照 2015 10 08 下午7 58 54
3、再从object library中拖一个Image Toolbar Item,到上图的Allowed Toolbar Items里。
4、选中刚拖进去的Toolbar Item,在Attributes inspector里设置icon图片。图片是在Assets.xcassets中设置的。
17E48E4D 36E1 4F41 AF24 9C62DF81A679
5、在Toolbar Item上点右键,拖到代码里,添加点击action。然后写逻辑代码,这里是弹出了一个alert框。
823DD029 1B48 4F6F B9B4 727F04A20623
6、在第2步的弹出窗口里,从第一栏里把Toolbar Item拖到第二栏里。
7、搞定,运行。查看效果。

swift os x 响应 NSTextField 的controlTextDidChange事件

NSTextField默认的action事件,只有在鼠标失去焦点后才会触发,如果想响应文件改变的事件,则不能直接使用action。而是要写代码了,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@NSApplicationMain

//注意下面这行代码添加了NSTextFieldDelegate
class AppDelegate: NSObject, NSApplicationDelegate,NSTextFieldDelegate {

    @IBOutlet weak var window: NSWindow!

    @IBOutlet weak var n_from_year: NSTextField!
   
    func applicationDidFinishLaunching(aNotification: NSNotification) {
        n_from_year.delegate = self
    }

    //重写NSTextFieldDelegate中的controlTextDidChange方法,用于执行NSTextField内容改变后要处理的业务。
    override func controlTextDidChange(notification: NSNotification?) {
        //Do things
    }

}

swift os x开发之菜单栏程序

视频可参考:
http://www.swiftvideotutorials.com/creating-menubar-apps-osx

开发步骤大体如下:
1、新建工程,因为这个菜单程序不需要窗口,所以在MainMenu.xib中删除窗口
2、在object library中拖入一个menu.
屏幕快照 2015 10 08 下午12 07 53
3、删除2个menu item,把一个文字改成 Show hidden files
4、添加action和outlet
屏幕快照 2015 10 08 下午12 11 51
屏幕快照 2015 10 08 下午12 12 29
5、创建icon
屏幕快照 2015 10 08 下午12 15 34
6、写代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!

    @IBOutlet weak var statusMenu: NSMenu!
   
    let statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-1)

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        // Insert code here to initialize your application
        let icon = NSImage(named: "statusIcon")
        statusItem.image = icon
        statusItem.menu = statusMenu
    }
   
    @IBAction func menuClicked(sender: NSMenuItem) {
        //let calendar = NSCalendar.currentCalendar()
        let alert = NSAlert()
        alert.messageText = "message"
        alert.informativeText = "informativeText"
        alert.addButtonWithTitle("ok")
        alert.addButtonWithTitle("cancel")
        let returnCode = alert.runModal()
       
        if returnCode == NSAlertFirstButtonReturn{
            NSLog("1")
        }else{
            NSLog("2")
        }
       
    }
}

7、这时运行项目,docker里还是会出现图标,需要增加一个配置:
979D3DE1 D453 4CDE 850A E2FD0F0C92F3
将Application is agent (UIElement)一项设置为Yes

xcode保存常用代码到code snippet library

xcode 提供了 code snippet library 用于管理常用代码。添加自己的代码到这里非常的简单:
1、选中要添加的代码。
2、左键拖到code snippet library的框里,xcode会自动添加默认的名称,然后双击刚添加的代码段,在弹出窗中选择编辑,就可以自己完善信息了。
swift node snippet library
3、使用时,在code snippet library里将代码拖动到程序源码文件中就可以了。