2013-06-09 2 views
0

표준 UISplitViewController을 사용하는 iOS 범용 앱이 있습니다. 최근의 변화 마지막에게 후왜 self.splitViewController가 갑자기 viewDidLoad에서 nil이되지 않습니까?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.detailViewController = (CustomViewController *)[[self.splitViewController.viewControllers lastObject] topViewController]; 
} 

:

내가 응용 프로그램 작업을 시작 거의 이후는 오른쪽에 상세 뷰 컨트롤러 왼쪽에있는 마스터 뷰 컨트롤러를 연결하는 장소에 다음 코드를했다 라인이 작동을 멈추고 일부 기능이 깨졌습니다. 이 문제의 이유는이 시점에서 self.splitViewControllernil입니다. 마지막 줄을 viewWillAppear:으로 옮기면 문제가 해결되지만 IMHO가 완전히 올바른 위치는 아닙니다.

변경 사항은 실제로 이와 관련이 없으며 컨트롤러 계층이나 내가 사용하는 스토리 보드를 변경하지 않았습니다. 그래서 나는이 행동이 어디에서 유래했는지 설명 할 수 없다. 어떤 힌트를 주시면 감사하겠습니다.

답변

1

splitViewController 인스턴스에 대한 동적 접근을 만들 수 있으므로 결코 nil을 반환하지 않거나 물론 viewDidLoad에서 nil을 검사하지 않습니다.

- (CustomViewController *)splitViewController 
{ 
    if (splitViewController == nil) { 
     splitViewController = [[CustomViewController alloc] init]; 
    } 
    return splitViewController; 
} 
+0

'viewDidLoad'에서'nil'을 검사하는 것은 도움이되지 않습니다. 컨트롤러를 수동으로 초기화하는 것뿐입니다. 스토리 보드를 사용할 때주의해야 할 사항이 아닙니다. 하지만 getter에서 [[self.splitViewController.viewControllers lastObject] topViewController]'를 호출 할 수 있습니다. – Koraktor

관련 문제