2012-06-07 4 views
1

첫 번째 Mac OS X 응용 프로그램을 만들고 있는데 문제가 있습니다.표 셀 뷰의 IBAction이 실행되지 않습니다.

NSArrayController에 연결된 내 창에서 NSTableView를 만들었으며 텍스트 필드 셀 편집을 중지 한 후 메서드를 호출하고 싶습니다.

enter image description here

후, 내가 만든 그것을 위해 IBAction를을 : 그래서 다음 스크린 샷에서 볼 수 있듯이, 때 최종 편집 작업을 호출 선택한

그것은 내 AppDelegate.h이 코드 생성 :

- (IBAction)stopEditingHeaderNameCell:(id)sender; 

을 그리고 나는 위해 AppDelegate.m에 IBAction를 편집 셀을 편집 할 때 NSLog 메시지를 표시합니다 : I 입력 누르거나 다른 요소를 클릭하여 셀을 편집을 중지 할 때

- (IBAction)stopEditingHeaderNameCell:(id)sender 
{ 
    NSLog(@"test"); 
} 

그러나 아무 일도 일어나지 않습니다. 이미이 IBAction을 NSTextField에 적용하려고 시도했지만 완벽하게 작동하지만이 텍스트 필드 셀에 적용 할 때 IBAction을 호출하지 않습니다.

누구든지 해결할 수 있습니까?

감사합니다.

답변

1

이것은 테이블보기에서 텍스트 필드 셀을 사용하는 방식이 아닙니다. 앱에서 테이블의 위임을 위임하게해야하며 (IB에서 연결할 수 있음) controlTextDidEndEditing :을 구현해야합니다. 이 메소드는 편집을 끝내거나 (셀 밖으로 Tab 키를 누르거나 다른 행이나 열을 클릭하여) 호출 될 때 호출됩니다.

+0

감사합니다. 매력적이었습니다. 이제이 함수로 보내지는 NSNotification 매개 변수 (obj)의 일부 속성을 가져 오려고합니다. [obj value]와 같은 정보를 얻으려고했지만 "- [NSConcreteNotification key] : 인스턴스로 전송 된 인식 할 수없는 selector 0x7fcf90d66150"및 "키 입력을 처리하는 동안 예외가 발생했습니다"와 같은 오류가 발생합니다. 값, 행 번호 및 내용과 같은 정보를 어떻게 잡을 수 있습니까? 그래서 내용에 따라 행의 다른 셀을 조작 할 수 있습니까? –

+0

[obj object]는 테이블 뷰에 대한 참조를 제공하므로 [[obj object] selectedRow]를 사용하여 어떤 행이 선택되었는지 확인할 수 있습니다. 이 줄은 : [[obj.userInfo valueForKey : @ "NSFieldEditor"] string]은 새로운 문자열 값을 얻습니다. – rdelmar

+0

NSLog (@ "% @")로 인쇄 할 때 [[obj.userInfo valueForKey : @ "NSFieldEditor"] string]이 새 내용을 성공적으로 반환하고 있지만 [[obj object] selectedRow] , [tableView selectedRow]))'. 추신 : 나는 [obj object]를'NSTableView * tableView = (NSTableView *) [obj object];를 사용하여 tableView라는 변수에 저장했다.; –