NSTableColumn에 NSButtonCell (체크 박스)이있는 NSTableView가 있는데, NSButtonCell (체크 박스)을 사용하여 IBB에서 구성한 행이 추가 될 때마다 NSButtonCell의 새 인스턴스를 생성합니다. 다음의 코드 덩어리의 두 번째 NSLog은 0NSButtonCell 상태에 대해 궁금하다
NSLog(@"%ld", (long)[[self.tableView preparedCellAtColumn:0 row:0]state]);
[[self.tableView preparedCellAtColumn:0 row:0]setState:1];
NSLog(@"%ld", (long)[[self.tableView preparedCellAtColumn:0 row:0]state]);
, 오른쪽 0 I 오전이 NSButtonCell의 인스턴스에 메시지를 보내는 것을 의미 반환 사실을 반환하는 이유 그러나, 나는 궁금 하군요? 그렇다면 왜 setState : 두 번째 NSLog의 반환 값을 변경하지 않습니까? 이 nil
를 수신 한 경우
그래, ApplicationDidFinishLaunching과 IBAction AddTask 둘 다에서 호출 해 보았습니다. 버튼을 클릭 할 때 발생하며 둘 다 셀 라인을 따라 반환됩니다.. 그래서, 거기에 인스턴스가 있다는 것을 압니다. 그러나 setState :를 호출해도 모양이 변경되지는 않습니다. 실제로, 어떤 것이 가장 유용 할지라도 plist에서 checkboxes 상태를로드하는 방법을 파악하려고 할 때 특정 상태로 초기화 할 수 있습니다. 처음에는 initWithState와 같은 메소드가 있어야한다고 생각했지만 그와 같은 메소드는 존재하지 않습니다 ... –
PopKernel
체크 박스가 테이블 뷰의 행에 있으므로 데이터 소스는 프로그래밍 방식이 아닌 체크 박스의 상태를 설정하는 방법입니다. 체크 상자의 상태를 변경하려면 데이터 소스를 업데이트해야하며 그러면 테이블 뷰의 확인란이 업데이트됩니다. 위에서 시도한 것처럼 수동으로 변경하면 데이터 소스에서 해당 행에 대해 반환하는 값으로 다시 변경됩니다. 데이터 소스를 사용하는 것은 초기에 모든 체크 박스의 상태를 설정하는 방법이기도합니다. –
자세한 내용은 Apple 개발자 웹 사이트에서이 페이지를 확인하십시오. https://developer.apple.com/library/mac/documentation/cocoa/conceptual/TableView/PopulatingView-TablesProgrammatically/PopulatingView-TablesProgrammatically.html –