4 개의 열이있는 NSTableView가있는이 프로그램은 두 개가 확인란을 만드는 프로그램입니다. 나는 지금 당장 일하는 사람을 얻으려고 노력 중이며 나는 붙어있다. 당신이 볼 수 있듯이상태를 NSTableColumn에 반영하기위한 확인란 얻기
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView {
NSString *filePathThree = [[NSBundle mainBundle] pathForResource:@"mydictionary" ofType:@"plist"];
NSData *myDataThree = [[NSData alloc]initWithContentsOfFile:filePathThree];
self.flozzCodeAndName = (NSMutableDictionary *)[NSPropertyListSerialization
propertyListFromData:myDataThree
mutabilityOption:NSPropertyListMutableContainersAndLeaves
format:NULL
errorDescription:NULL];
return [[flozzCodeAndName objectForKey:@"name"] count];
}
- (void)tableView:(NSTableView *)tableView
setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)rowIndex
{
NSButtonCell *cell;
cell = [[NSButtonCell alloc] init];
[cell setButtonType:NSSwitchButton];
[cell setTitle:@""];
[cell setTag:rowIndex];
NSLog(@"%d", [cell tag]);
[cell setCellAttribute:NSCellEditable to:3];
[cell setImagePosition:NSImageOnly];
[cell setState:NSOnState];
NSLog(@"%d", [cell state]);
[havzColumn setDataCell:cell];
[myTableVeew reloadData];
[cell release];
}
- (id)tableView:(NSTableView *)aTableView
objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {
NSString *filePathThree = [[NSBundle mainBundle] pathForResource:@"mydictionary" ofType:@"plist"];
NSData *myDataThree = [[NSData alloc]initWithContentsOfFile:filePathThree];
self.flozzCodeAndName = (NSMutableDictionary *)[NSPropertyListSerialization
propertyListFromData:myDataThree
mutabilityOption:NSPropertyListMutableContainersAndLeaves
format:NULL
errorDescription:NULL];
NSArray *myArray = [flozzCodeAndName objectForKey:[aTableColumn identifier]];
NSString *myStringValue = [myArray objectAtIndex:rowIndex];
return myStringValue;
}
것은, 내가이 테이블보다는 바인딩에 대한 데이터 소스 방법을 사용하고 있습니다 :
첫째, 여기 내 관련 코드입니다. 코코아에 대해 읽은 책은 태그가있는 체크 박스를 만들었지 만 태그가 배열에 있다고 생각합니다. 그렇게하는 것이 가장 좋은 방법은 아닙니다.
어쨌든 이것을 실행하면 디버거가 버튼의 상태 (NSOnState 때문에 모두 1)와 함께 태그 (행과 동일)를 표시합니다. 내 문제는 내가 상자를 그들의 상태에 따라 확인하고 선택을 취소 할 수 없다는 것입니다. 나는이 질문을 읽었다 : Checkbox on table column won't register click
그리고 나서 NSTableView 데이터 소스 참조. Nozzi 씨에 따르면 연결된 질문에 따르면 상자의 상태를 포함하는 배열이 필요하므로 NSMutableArray에 들어가기 위해 [cell state]
을 NSNumber로 설정해 보았습니다. 나는 그것을 배웠고 그것이 옳다고 생각하지 않는다. 이 테이블에는 454 개의 행이 있습니다 (태그는 0부터 시작하는 배열로 인해 453으로 이동 함).
또한 tableview : setObjectValue :에있는 셀 정의 내용을 'awakeFromNib'에 넣어야하는지 궁금합니다. IB에 체크 박스 버튼 셀을 넣었지만 이전에 문제가 있었기 때문에 프로그래밍 방식으로도 결정했습니다. 이 모든 과정에서 나는 setObjectValue 메소드에 [myTableVeew reloadData]
을 가지고 있었고 아직 가지고 있습니다.
다른 정보가 필요하면 지원해 주시면 감사하겠습니다.