이 문제를 해결하기 위해 KVO (키 값 관찰)를 사용하여 'displayedViewController'라는 속성을 모니터링하려고했습니다. 내 응용 프로그램에서 모든 viewcontroller의 기본 viewcontroller에 사용되는 기본 viewcontroller로 사용자 정의 viewcontroller를 만들었습니다. 그런 다음 initWithNibName : bundle : of the viewcontroller에 다음 코드를 추가합니다.viewcontroller가 presentModalViewController에 의해 표시 될 때 어떻게 알 수 있습니까?
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
[self addObserver:self forKeyPath:@"presentedViewController" options:NSKeyValueObservingOptionNew context:nil];
}
return self;
}
하고, 그런 겹쳐 관찰 방법
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"object %@", object);
}
마지막으로, I는 상기 코드의 ViewController 포함 염기로부터 유도 된 하나 개의 ViewController했다. presentModalViewController 메서드를 사용하여 모달 viewcontroller로 만들었습니다. 그러나 내가 설치 한 것을 관찰하는 것은 효과가 없었다. 나는 그 방법이 호출 될 때 관찰이 안절부절 될 것이라고 예상했다. 불행하게도 아무 일도 일어나지 않습니다.
요컨대, 두 가지 질문이 있습니다. 첫째, 그것이 작동하지 않는 이유입니다. 다른 하나는이 목표를 달성 할 수있는 좋은 방법이 있다는 것입니다.
편집 : 나는 @ jailani habeeb의 방식으로 성공을 거둘 수있었습니다. 고맙습니다. @ jailani habeeb. 또한 KVO가 작동하지 않는 이유가 궁금합니다. 'title'과 같은 다른 속성도 정상입니다.
viewDIdLoad 메서드에서 관찰자 추가를 시도하십시오. – Greg
@ 그렉 그것은 작동하지 않습니다. 나는 그것을 시도했다. –