2011-12-01 3 views
1

여기에 제 문제가 있습니다. Storyboard의 segue로 바 버튼에 대한 popover segue가 있습니다. UIPopoverController 내부의 UIViewController는 서버에서 데이터를로드해야합니다. 스토리 보드를 사용하면 popover를 닫을 때마다 뷰가 해제되므로 popover가 다시 나타날 때마다 서버에서 데이터를 다시로드하려고 시도합니다. 나는이 행동을 원하지 않는다. Storyboard가 Popover 컨트롤러 내부의 View Controller를 재설정하지 않도록하려면 어떻게합니까? UITabBarController가하는 것과 같은 것. UITabBarController는 처음으로 viewDidLoad를 호출하고 후속 탭 스위치 인 viewWillAppear가 호출됩니다.Storyboard Segue가 UIPopoverController 내의 UIViewController를 재설정하지 못하게하는 방법

답변

4

Segue가 그렇게 설계되었습니다. segue 할 때마다 -보기가로드됩니다. 당신이 그것을 할 필요가있는 경우는 데이터 - 당신은 SEGUE 전에 호출이 방법

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    if ([[segue identifier] isEqualToString:@"your segue identifier"]) 
    { 
     //get popover 
     ViewController *vc = [segue destinationViewController]; 

     //Set popover data to vc here 
    } 

을 그것을 외부 팝 오버를 저장하고 사용해야하며,이 방법에서 팝 오버에 데이터를 설정합니다. 인터페이스 빌더에서 Segue 식별자를 설정하는 것을 잊지 말고 사용하십시오.

+0

그러나 뷰 컨트롤러 외부로 데이터를로드하는 데 추가 복잡성이 추가됩니다. 이상적으로보기 컨트롤러에 있어야하는 데이터를로드하기위한 코드가 Popover 상위 컨트롤러에있게됩니다. 나는이 문제를 해결하기 위해 segues를 사용하지 않고 항상 손으로 popover를 생성했다. 하지만 저는 Segue를 사용하고 싶습니다. –

+0

나는 이해한다 - segue는 항상 새로운 ViewController를 생성 할 것이다. 또는 segue를 사용하지 않거나 이것을 알고 segue를 사용하지 마십시오. 하지만 사용자 정의 segue를 사용하려고 할 수는 있지만 아무 것도 변경되지 않을 것이라고 생각합니다. – igofed

+1

Segue를 사용하여 유지 관리되는 항목은 작업이 완료되면 해제되므로 맞춤 Seque는 선택 사항이 아닙니다. 따라서 현재의 솔루션은 Segues를 전혀 사용하지 않는 것처럼 보입니다. –

관련 문제