2012-06-27 3 views
0

그래서 저는 프로그램에서 아주 이상한 행동을 발견했습니다. 다음은 간단한 코드 조각입니다. 그리고 빌드하고 실행할 때 발생하는 것을 설명 할 것입니다.괴상한 행동 - 발포하지 않습니다.

-(void)viewDidLoad { 
    [super viewDidLoad]; 
    ... 
    if (self.sampleBool) { 
     [self performSegueWithIdentifier:@"mySegue" sender:self]; 
    } 
    else { 
     // do stuff 
    } 
} 
... 
-(IBAction)myMethod:(UITapGestureRecognizer*)sender { 
    ... 
    [self performSegueWithIdentifier:@"mySegue" sender:self]; 
} 

segue가 UITapGestureRecognizer를 통해 트리거하므로 정상적으로 연결됩니다. 그러나 self.sampleBool이 true이고 performSegueWithIdentifier가 viewDidLoad 내에서 호출되면 segue가 실행되지 않습니다.

누구든지 추측 할 수 있습니까? 도움이나 조언을 주시면 감사하겠습니다.

감사

답변

0

viewWillAppear 또는 viewDidAppear 이벤트를 사용하여 시도하고 작동되는지 확인합니다. 내 같음은 모든 것들이 완전히 배선되어 있지 않기 때문에 viewDidload의 각 부분은 관련이 없을 수 있습니다.

반면에 여기에 디자인 문제가 있습니까? 조건이 맞다면 그 segue가 전혀 일어나지 않아야합니까? 아마도 뷰가로드되기 전에 테스트를 추가로 업스트림 할 수 있습니다.

+0

'viewDidAppear'을 사용할 때 발생합니다. 너무 이상합니다. 그것은 당신의 추측이 강타일지도 모르는 것처럼 보일 것입니다! 감사! –

0

ViewDidLoad에서 다른 ViewController를 푸시하면 viewDidLoad에서 viewcontroller가 아직 준비되지 않았기 때문에 문제가 발생합니다! 간단히 viewWillAppear 또는 viewDidappear를 사용하려고합니다.