2013-12-10 5 views
0

presentViewController : animated : completion : (iOS 7)을 사용하여 뷰 컨트롤러를 모달로 표시하려하지만 핫스팟 활성화되어 있으면 작동하지 않습니다. 내 코드는 다음과 같습니다.presentViewController가있는 뷰 표시 : 애니메이션 : 완료 : presentViewController : 애니메이션 : 완료 : 핫스팟이 활성화되었습니다.

UINavigationController *navController = [self.storyboard instantiateViewControllerWithIdentifier:@"someViewController"]; 

[self presentViewController:navController animated:NO completion:nil]; 

이유는 무엇입니까? 감사!

답변

3

viewDidLoad에 표시하지 말고 viewDidAppear 메서드에서로드 할 수 있습니다. 그냥 여분의 문맥

-(void)viewDidAppear:(BOOL)animated 
{ 
    UINavigationController *navController = [self.storyboard instantiateViewControllerWithIdentifier:@"someViewController"]; 
    [self presentViewController:navController animated:NO completion:nil]; 
} 

: 따라서 컨트롤러가 표시되지 아직 때문에이있는 viewDidLoad에 presentViewController를 호출하지 않아야합니다 (심지어 컨트롤러 계층 구조에서 가능하지,하지만 확실하지 않다), 그리고 수 없습니다 다른 컨트롤러를 제시합니다. - @hukir.

+1

여분의 컨텍스트에 대해서만, 컨트롤러가 아직 보이지 않거나 (아마도 컨트롤러 계층에도 없지만 확실하지 않기 때문에) viewDidLoad에서 presentViewController를 호출하면 안되므로 다른 컨트롤러를 표시 할 수 없습니다 . – hukir

+0

그래, 네가 맞아, 난 애니메이션없이 view를 표현할 필요가 있었고, viewDidAppear에서 그것을 수행해야했기 때문에 viewWillAppear을 사용했다. "parent"뷰는 밀리 세컨드 동안 보여진다. –

+0

또한이 도움이되는 경우 BOOL을 사용하여보기 컨트롤러가 이미 표시되었는지 여부를 확인해야했습니다. 고마워, 내가 대답을 받아 들일거야 @Viruss –

관련 문제