mac开发中使用自定义NSTableCellView

首先创建一个新的mac工程,不勾选StoryBoard

打开MainMenu.xib ,选中主window并向window中拖入一个NSTableView,并加上约束。

选中tableview,并设置colloms为1,将header选项的勾去掉,并删掉Table Column下面的Table Cell View

创建一个empty的xib文件命名为CustomCell.xib

往CustomCell中拖入tablecellview,可以去掉不需要的控件,添加上自己需要的控件,将cell的identifier改为CustomCell

创建一个CustomCell类,继承NSTableCellView,将xib内cell的Class改为CustomCell,然后就可以连线了

CustomCell.h 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import Cocoa

class CustomCell: NSTableCellView {

    @IBOutlet weak var color: NSColorWell!
    @IBOutlet weak var label1: NSTextField!
    @IBOutlet weak var label2: NSTextField!
    override func drawRect(dirtyRect: NSRect) {
        super.drawRect(dirtyRect)

        // Drawing code here.
    }
    
}

这样cell的工作就完成了

将TableView自身与TableView的datasource和delegate都连接到appdelegate里面.注意一共需要连三条线

appdelegate的代码

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
36
import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate , NSTableViewDataSource,NSTableViewDelegate {
    @IBOutlet weak var tableview: NSTableView! {
        didSet{
            self.tableview.registerNib(NSNib(nibNamed: "CustomCell", bundle: nil)!, forIdentifier: "CustomCell")
        }
    }

    @IBOutlet weak var window: NSWindow!

    func numberOfRowsInTableView(tableView: NSTableView) -> Int {
        return 20
    }
    func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
        var cell = tableview.makeViewWithIdentifier("CustomCell", owner: self) as! CustomCell
        cell.label1.stringValue = "============="
        cell.label2.stringValue = "+++++++++++++"
        cell.color.color = NSColor.yellowColor()
        return cell
    }
    func tableView(tableView: NSTableView, heightOfRow row: Int) -> CGFloat {
        return 111
    }
    func applicationDidFinishLaunching(aNotification: NSNotification) {
        // Insert code here to initialize your application

    }

    func applicationWillTerminate(aNotification: NSNotification) {
        // Insert code here to tear down your application
    }


}

这样就全部完成了。我故意将cell文件单独放在xib里,是为了方便复用。
mac下自定义cell几乎跟ios下的一样,但是相关文章实在太少,于是我将整个过程记录下来,供大家参考。

源代码可以在这里下载,运行环境Xcode 6.3+,swift 1.2


代码有点老了.不能运行,但是看看逻辑和xib的设置是没什么问题的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值