3

저는 split-view 기반의 iPad 응용 프로그램 (세로 모드에만 해당)을 만들고 있는데 viewDidUnload이 호출 된 후 초기 상태를 복구하는 방법을 알고 싶습니다.UISplitViewController를 사용하여 viewDidUnload (메모리 경고 이후)를 복구하는 방법

분할보기 응용 프로그램이 처음 시작 -splitViewController:willHideViewController:withBarButtonItem:forPopoverController: 은 (오른쪽 -viewDidLoad 후) 자동으로 호출된다. 메서드에서 UIBarButtonItems를 준비합니다.

UIWebViewController (많은 메모리를 소비 함)과 함께 모달 대화 상자를 열면 응용 프로그램에 메모리 경고가 표시되고 viewDidUnload (s)가 호출됩니다.

모달 대화 상자를 닫으면 -viewDidLoad가 자동으로 호출되지만 이번에는 -splitViewController:willHideViewController:withBarButtonItem:forPopoverController:이 호출되지 않습니다.

-splitViewController:willHideViewController:withBarButtonItem:forPopoverController: 에 UIBarButtonItems를 준비하지만 단추가 닫히지 않습니다.

이 경우 수동으로 메서드를 호출해야합니까?

비슷한 게시물을 찾았습니다. https://github.com/grgcombs/IntelligentSplitViewController/issues/6

감사합니다.

+0

거의 항상 viewDidLoad에서 UI를 구성해야합니다. UIBarButtonItem을 만든 후에는 어디에 넣을까요? –

+0

splitViewController : willHideViewController : withBarButtonItem : forPopoverController : 분할보기 기반 프로젝트를 만들 수 있습니까? viewDidLoad에서 구현을 찾을 수 없습니다. 나는 버튼을 동적으로 바꾸기 때문이라고 생각합니다. – tokentoken

답변

3

나는 내 자신의 질문에 대답해도 괜찮은지 모르겠지만 어쩌면 나는 이것에 대한 답을 발견했다.
http://osdir.com/ml/cocoa-dev/2011-02/msg00430.html

우리가 viewDidUnload에 BarButtonItems을 유지하고있는 viewDidLoad에로드해야한다고 말한다.

잘 작동하는 것 같습니다.

- (void)viewDidUnload { 
    [super viewDidUnload]; 
    self.toolbarItems = self.toolbar.items; // property with retain policy 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    if (self.toolbarItems) { 
     self.toolbar.items = self.toolbarItems; 
     self.toolbarItems = nil; 
    } 
}