NSTableView는 하나의 열에 NSTableViewDataSource 메서드 (바인딩이 포함되지 않음)가 채워져 있습니다. NSTableView는 NSScrollView 내부에 있으며 인터페이스 작성기의 라이브러리에서 NSTableView를 드래그하면 기본 동작이됩니다. 테이블 뷰의 내용은 사용자가 입력 한 검색 문자열을 기반으로 채워지며 그 시점 이후에는 변경되지 않습니다.NSTableView가 선택 항목으로 건너 뜁니다 ... 왜?
난 단지 데이터 소스 프로토콜이 두 가지 방법을 구현하고있다 :
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView;
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row;
내 검색 문자열을 입력 한 후 초점은 NSTextField있는 아직,하지만 나는 자연스럽게 내 마우스의 스크롤 휠과의 tableview를 스크롤 할 수 있습니다 스크롤 막대의 화살표와 함께 테이블 뷰가 포커스 링을 수신하지도 않습니다. 그러나 내가 아래로 스크롤하여 테이블 뷰의 맨 위에 있지 않은 상태에서 테이블 뷰의 개별 행을 강조 표시하려면 테이블 뷰가 위로 이동 한 다음 그 시점에서 내 마우스 아래있는 행을 선택합니다 . 그 지점 다음에 행을 클릭하면 예상대로 작동합니다.
즉, NSTableView에 포커스 링이있는 경우 행을 클릭하면 예상되는 행이 강조 표시됩니다. 주위에 포커스 링이없는 경우 행을 클릭하면 맨 위로 스크롤 한 후 그 위치에있는 행이 선택됩니다.
어떤 통찰력이라도 있습니까? Snow Leopard를 사용하고 있지만 Leopard를 실행하고있을 때 일어난 것 같습니다.
오 ... 당신은 절대적으로 옳습니다! 텍스트 필드를 "보내기 만 할 때 보내기"대신 "최종 편집시 보내기"로 설정했습니다. 결과적으로, 내가 tableview를 클릭했을 때 검색을 다시 실행하고있었습니다. 내가 tableview를 클릭하기 전에 "검색"버튼으로 탭하면 예상대로 작동합니다. 감사합니다. –