我在将复选框放入UITableView时遇到了麻烦.我在这里发布我的部分代码.
- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { NSButtonCell *cell=[[NSButtonCell alloc] init]; NSString *strDisplayPlaylistName; strDisplayPlaylistName=[playListNameArray objectAtIndex:row]; [cell setTitle:strDisplayPlaylistName]; [cell setAllowsMixedState:YES]; [cell setButtonType:NSSwitchButton]; return cell; } - (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { NSCell *aCell = [aTableColumn dataCellForRow:rowIndex]; [aCell setNextState]; //NSCell *aCell=[aAddedCells objectAtIndex:rowIndex]; //[aCell setNextState]; }
我在UITableView中找到了复选框.但问题是我无法取消选中按钮.还有什么可做的.我是可可节目的新手.
解决方法
你错过了几件重要的作品.您需要更新模型(数据stcuture)以响应tableValue:setObjectValue:forTableColumn:row:message,以便您可以正确地从tableView返回新值:objectValueForTableColumn:row:方法.
下面是一些表数据源方法,假设您的’myRows’数组填充了具有’booleanAttribute’属性的对象.
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView { return [myRows count]; } - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { BOOL value = [[myRows objectAtIndex:row] booleanAttribute]; return [NSNumber numberWithInteger:(value ? NSOnState : NSOffState)]; } - (void)tableView:(NSTableView *)tableView setObjectValue:(id)value forTableColumn:(NSTableColumn *)column row:(NSInteger)row { [[myRows objectAtIndex:row] setBooleanAttribute:[value booleanValue]]; }
您还应该在界面构建器中设置表格单元格.您可以将配置为标准复选框的按钮单元直接拖到其中一个表列上.