两种方式实现在 Cell Based NSTableView中内嵌复选框

本文详细介绍了在Objective-C(OC)环境下,如何在Cell Based NSTableView中实现内嵌复选框的功能。通过修改代理方法、设置数据源以及处理不同列的行为,实现了在表格的第一列展示可选中的复选框。最后提供了两种不同的实现方法,一种通过条件判断动态设置,另一种直接替换单元格类型。
摘要由CSDN通过智能技术生成

本文以 CellBased NSTableView 为例,讲述如何实现在table view 中内嵌复选框的目的。最终效果如下图所示。

          

首先创建一个 Cocoa App, 在 MainMenu.xib 中插入一个 NSTableView 控件,并将该table view 改为 Cell Based 类型。目前还没尝试 View Based 实现该目的。后续有时间会继续研究使用 View Based 如何实现。选中我们的tableview 在 Attributes Inspector 栏位设置 Columns 为 3列。并分别设置三个列的 identifier 和 title 为: checked  name  ID , Checked Name ID。 此时我们的table view 是这样的

 

下面开始编写我们的代理方法 checkDS.h 和 checkDS.m , 

#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>

@interface checkDS : NSTableView<NSTabViewDelegate, NSTableViewDataSource> {

}

@property (retain) NSTableView *tableView;
@property (assign) NSMutableArray *aryCheck;

@end

因为上面我们的NSTableView 所有列的cell  都是 NSTextFieldCell, 要实现将某一列替换为复选框,总共需要实现如下四个方法,这里直接帖出我的代码,

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView;
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row;
- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row
- (void)tableView:(NSTableView *)tableView setObjectValue:(nullable id)object forTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row

//下面的方法主要设置tableview 显示数据的行数。我们的数据源设为 属性 aryCheck.

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
{
    return [aryCheck count];
}

//下面的方法用于设置tableview 显示数据的内容,当列的identifier 为name 和 ID 时,直接从字典中取出对应的值即可,当我们的列为 checked 时,因为要实现复选框的目的,我们进行了一个值的转换,若字典中取出的值为 “yes” 就置为 1, 若字典中取出的值为 "no" 就置为 0, 若有其他情况,这里可以设为其他值,后面我们其他的代理方法会根据这个值(yes 和 no)设置是否为 复选框,根据这里设置的 0 和 1 设置 复选框是选中和不选中状态。

- (id)tableView:(NSTableView *)ta
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值