我這樣做,它的工作原理:
1)確保你的tableview的數據源/委託方法中有分段控制單元的引用;在我的項目中,我剛剛在視圖控制器類中連接了帶有outlet屬性的分段控制單元
2)爲帶分段控件的列(在我的項目中,repeatDays是此列的標識符)返回表的數據源getter方法中的任何內容例如,零
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)rowIndex {
NSString *colId = [tableColumn identifier];
if ([colId isEqualToString:@"repeatDays"]) {
return nil;
}
//handle other columns
}
3)實施的tableview的委託willDisplayCell方法
- (void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
NSString *colId = [tableColumn identifier];
if ([colId isEqualToString:@"repeatDays"]) {
for (int i = 0; i < self.segmentedCell.segmentCount; ++i) {
BOOL selected = [[self.days objectForKey:[NSNumber numberWithInt:i]] boolValue];
[self.segmentedCell setSelected:selected forSegment:i];
}
}
}
需要配置分段單元時表視圖即將顯示,這樣做根據你的模型的細節,例如,在我的項目中,我有一個可變的詞典天,並且它包含對應於段的布爾值,如{0:否,1:是,2:否,3:是,4:否,5:否,6:否},其中0,1,2,3,4, 5,6 - 段,是/否 - 是否選擇該段或否
4)最後一個,實現tableview的數據源設置方法;傳遞給它的對象是點擊段索引;適當地修改你的模型,也就是點擊段索引的翻轉標誌:
- (void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
NSString *colId = [tableColumn identifier];
if ([colId isEqualToString:@"repeatDays"]) {
int i = [object intValue];
BOOL selected = [[self.days objectForKey:[NSNumber numberWithInt:i]] boolValue];
[self.days setObject:[NSNumber numberWithBool:!selected] forKey:[NSNumber numberWithInt:i]];
}
}