2009-11-11 2 views
4

저의 삶을 위해서, 나는 계속 NSComboBox으로 난처한 생활을하고 있습니다. NSComboBox - 선택한 정보 및 NSComboBoxDataSource 얻기

은 내가 NSComboBoxDataSource 프로토콜을 준수하는 객체를 생성 및 구현 :

- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox; 
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index; 

나는 데이터 소스를 사용하고 소스로이 객체를 설정하는 내 NSComboBox의 인스턴스를 설정합니다. 위대한 작품, 내 구현 항목의 수를 반환하고 특정 인덱스 항목의 NSString 값을 반환합니다.

그런 다음 무언가가 선택되었을 때 무언가를하고 싶다고 결정했습니다. 문제가 시작되는 곳입니다. 콤보 상자의 항목 선택을 처리하기 위해 NSComboBoxDataSource 프로토콜에서 재정의하는 확실한 방법은 없습니다.

그래서, 나는 또한 나의 목적은 NSComboBoxDelegate을 준수하고 구현 한 :

- (void)comboBoxSelectionDidChange:(NSNotification *)notification; 

불행하게도, 선택에 NSTableView 달리 통지의 객체가 선택한 항목의 NSComboBox하지 객체입니다. "미세"나는 내가 NSComboBox 메소드를 호출, 자신에게 :

- (id)objectValueOfSelectedItem; 

이 선택한 항목을 반환해야하고 내가 거기에서 갈 수 있습니다. 그러나이 방법은 usesDataSourceNO으로 설정되어있을 때만 호출되며 이는 제 경우는 아닙니다. 이것을 사용할 때 경고가 날기 시작합니다.

내 질문은 데이터 소스를 사용할 때 NSComboBox 선택 사항을 처리하는 적절한 방법은 무엇입니까?

답변

15

나는 objectValueOfSelectedItem 대신 indexOfSelectedItem을 원한다고 생각합니다. 그렇다면 데이터 소스이므로 자신의 comboBox:objectValueForItemAtIndex: 메서드를 호출 할 수 있어야합니다.