이 특정 키를 관찰하도록 설정하면 아무 일도 일어나지 않습니다. 여기 내가 의미하는 바가있다.NSArrayController - Observing selectionIndex
NSTableView가있는 표준 Cocoa 응용 프로그램이 있는데 어떤 셀을 선택했는지에 따라 이미지보기에 표시된 이미지를 변경하는 방법을 알아 냈습니다.
이제는 선택한 색인으로 버튼을 비활성화/활성화하는 방법을 알아 내려고합니다. 이것이 의미하는 바는 창에 특정 인덱스에서 사용할 수없는 버튼이 있다는 것입니다.
SomeClass의 init 메소드 그러나, 나는이 observeValueForKeyPath 구현할 때
-(id)init {
if (self=[super init]) {
[arrayController addObserver:self forKeyPath:@"selectionIndex" options:NSKeyValueObservingOptionNew context:NULL];
}
}
: 나는 새 인덱스를 선택로 방법을 변경 사항이 포착되지 않습니다. 사실 로깅을 시도하면 콘센트에 (null)이 표시됩니다. 그러나 AppDelegate에서 관찰자를 추가하면 AppDelegate (관찰자로 지정된 경우)가 변경 사항을 선택합니다.
내 일반적인 SomeClass 개체가 어떤 이유가 있습니까? 다른 방법으로해야합니까?
참고 :
나는 다음 윈도우의 소유자 SomeClass을하고,로 awakeFromNib에서 관찰자를 설정하는 NSWindow 표시로 SomeClass를 서브 클래스했는데,이 작동하지만, 그것을 할 나쁜 방법처럼 보인다.
SomeClass에서 어떻게 alloc 초기화를 수행합니까? 또한, "콘센트 쇼 (null)"로 무엇을 의미합니까 - 어떤 콘센트입니까? – rdelmar
SomeClass는 nib 윈도우 (파란색 큐브의 것)와 함께 초기화되고 SomeClass (그리고 심지어 후에)의 인스턴스를 초기화하는 동안 NSLog (@ "% @", arrayController)를 수행하면 인스턴스가 생성됩니다. 나는'(null)'을 얻을 것이다. (arrayController가 콘센트로 설정 됨) –
초기화가 호출되는지 확인 했습니까? 이 클래스의 인스턴스가 코코아 콩 (nib)에서 생성 된 경우 코드를 awakeFromNib에 넣어야합니다. – rdelmar