mac 自定义NSTableCellView

来源:互联网 发布:java中方法的定义包括 编辑:程序博客网 时间:2024/06/03 15:21

1新建空项目,参考:http://blog.csdn.net/zfphp/article/details/51153144
2 选中MainWindowController.xib,在window上添加NSTableView控件,选中NSTableView,设置Content Mode为View Based.
这里写图片描述
3创建一个empty的xib文件命名为CustomCellView.xib
4往CustomCellView中拖入tablecellview,可以去掉不需要的控件,添加上自己需要的控件,将cell的identifier改为customCell
这里写图片描述

5创建一个CustomCell类,继承NSTableCellView,将xib内cell的Class改为CustomCell,然后就可以连线了.
这里写图片描述
这样cell的工作就完成了

6将TableView自身与TableView的datasource和delegate都连接到appdelegate里面.注意一共需要连三条线
这里写图片描述

7 MainWindowController.m代码如下:

#import "MainWindowController.h"#import "CustomCell.h"@interface MainWindowController ()@end@implementation MainWindowController- (void)windowDidLoad {    [super windowDidLoad];    // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.    self.contents = [NSMutableArray arrayWithObjects:@"a",@"b", nil];}-(NSString *)windowNibName{    return @"MainWindowController";}-(void)awakeFromNib{    [self.tableView registerNib:[[NSNib alloc] initWithNibNamed:@"CustomCellView" bundle:nil] forIdentifier:@"customCell"];}#pragma mark table datasource-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{    return self.contents.count;}-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{    return [self.contents objectAtIndex:row];}#pragma mark table delegate-(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{    /*    if(!_nib){        _nib = [[NSNib alloc] initWithNibNamed:@"CustomCellView" bundle:nil];        [tableView registerNib:_nib forIdentifier:@"customCell"];    }*/    CustomCell *cellView = [tableView makeViewWithIdentifier:@"customCell" owner:self];    cellView.title.stringValue = @"aaa";    cellView.subTitle.stringValue = @"bbb";    return cellView;}@end

参考:http://sxiaojian.com/2015/08/11/Mac-NSTableView/

0 0
原创粉丝点击