1

사용자에게 제공되는 버튼과 해당 동작을 제어 할 수 있도록 사용자 정의 QLPreviewController 구현이 있습니다. 나는 사용자 정의 클래스의 viewWillAppear 방법에 다음 코드를 추가했습니다 :QLPreviewController 상속, "Home"을 클릭하면 navigationItem의 변경된 버튼이 재설정됩니다.

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(openWithPressed:)]; 
    UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissPressed:)]; 
    [self.navigationItem setRightBarButtonItem:rightBarButtonItem]; 
    [self.navigationItem setLeftBarButtonItem:leftBarButtonItem]; 
    [rightBarButtonItem release]; 
    [leftBarButtonItem release]; 
} 

프리 뷰어는 우리의 사용자 정의 버튼으로 표시 않으며, 예상대로 작동합니다.
사용자가 "홈"버튼을 클릭하면 문제가 발생합니다. UIApplication.doEvents 메서드가 navigationItem 집합 단추 메서드를 호출하고 원래 처리기로 원래 값으로 다시 설정합니다.
어떻게 이런 일이 일어나지 않도록하거나 이러한 이벤트를 직접 처리하고 자신의 사용자 지정 단추로 덮어 쓸 수 있습니까?

답변

2

동일한 문제가있었습니다. 응용 프로그램이 다시 활성화 될 때 호출되는 NSNotification을 설정 한 다음 탐색 바를 원하는대로 재설정하십시오.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(configureNavBar) 
              name:UIApplicationDidBecomeActiveNotification object:nil]; 
+0

감사합니다. 지금까지는 플래그가있는 추한 해결 방법을 사용하여 nativeItem getter를 덮어 쓰고 더미 객체를 반환하므로 OS가 실제 객체를 변경하지 않습니다. 나는 정말로 그것을 좋아하지 않았다. 귀하의 솔루션은 실제로 훨씬 더 우아합니다. –