2013-12-12 2 views
1

이 문제를 해결하기 위해 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'과 같은 다른 속성도 정상입니다.

+0

viewDIdLoad 메서드에서 관찰자 추가를 시도하십시오. – Greg

+0

@ 그렉 그것은 작동하지 않습니다. 나는 그것을 시도했다. –

답변

1

presentModalViewController는 iOS 6에서 사용되지 않습니다. 대신 presentViewController : animated : completion :를 사용할 수 있습니다. 완료 블록에서 논리를 수행 할 수 있습니다.

0
  1. 당신은의 UIViewController 하위 클래스와 방법을

    presentViewController을 무시할 수 있습니다 : 애니메이션 : 완료 :

  2. 그런 postnotification 뷰 컨트롤러 중 하나를보기 위해

  3. 등록 제시 컨트롤러에 알림이 필요한 경우 알림이 필요합니다.

+0

조언 해 주셔서 감사합니다. 실제로 내 목표를 달성하는 데 도움이됩니다. 내가 정말로하고 싶은 것은 viewcontroller가 제시되기 전에 뭔가를하는 것입니다. 따라서 첫 번째 방법은이 상황에 좋습니다. –

관련 문제