2011-02-27 4 views
0

나는 아주 간단한 viewController 질문이 있습니다.Touchupinside 및 간단한 viewController 질문

2 개의 버튼이있는 기본보기가 있는데, 버튼을 터치하면 새로운보기 컨트롤러 (표보기)를로드하고 싶습니다.

nib 파일로 새 viewController를 만들었습니다.

- (IBAction)displayVin { 

    UIViewController *vinController = [[UIViewController alloc] initWithNibName:@"vinController" bundle:nil]; 
    [self.navigationController pushViewController:vinController animated:YES]; 
    [vinController release]; 

} 

그것은 그러므로 내가 뭔가를 잊고해야 아무것도 아니에요,하지만 :

는 내가 IB에있는 버튼을 연결 한이 같은 IBAction를 작성 됨? 이 newViewController를 다른 곳에서 선언해야합니까? 오류 메시지없이 컴파일 및 실행 중입니다.

업데이트 : 버튼을 누를 때

- (IBAction)displayVin:(id)sender { 

    NSLog(@"here"); 
    UIViewController *vinController = [[UIViewController alloc] initWithNibName:@"vinController" bundle:nil]; 
    [self.navigationController pushViewController:vinController animated:YES]; 
    [vinController release]; 

} 

그러나이 오류와 충돌하는 것 : 내가 지금 사용하고

는 [displayVin] : 인식 할 수없는 선택기 전송 인스턴스 0x8d03000 * * 캐치되지 않은 예외로 인해 앱 종료 'NSInvalidArgumentException', 이유 : '- [displayVin] : 인식 할 수없는 se 강사가 인스턴스로 전송 0x8d03000 '*

다른 곳에서 뭔가를 선언해야합니까, 아니면 그 코드로 충분해야합니까?

답변

0

NSLog()를 사용하여 실제로 displayVin() 루틴에 있는지 확인하십시오. 버튼 이벤트는 acion에 매개 변수를 보내므로 -(IBAction)displayVin 대신 -(IBAction)displayVin:(id)sender으로 선언해야합니다.

+0

저는 displayVin 메서드 안에 있습니다. 팁을 주셔서 감사합니다. 나는 (id) 발신자를 추가했는데 - (IBAction) displayVin : 헤더와 구현 파일에 발신자를 추가했습니다. 이제 충돌이 발생합니다 (적어도 등록하는 것이 좋을 것 같습니다). 업데이트 된 질문에 로그인하십시오. –

0

업데이트 된 코드의 경우 IB 파일에 IBOutlet을 다시 연결해야 할 수 있습니다. [viewController displayVin :] 대신 [viewController displayVin] 메서드 (인수없이)를 호출하는 것처럼 보입니다.

+0

멋진, 더 이상 충돌하지! 감사 . 여전히 NSlog를 올바르게 인쇄하고 있습니다. 예를 들어보기 이동과 같이 다른 작업을하지는 않지만 적어도 충돌은 발생하지 않습니다. –

+0

코드를 다시 읽은 후 : navigationController를 실제로 사용하고 있는지 확인하십시오. 그렇지 않은 경우 self.navigationController가 설정되지 않고 pushModalViewController가 아무 것도하지 않습니다. IBAction 메서드가 viewController에 있다고 가정하면 해당 호출을 [self pushModalViewController : vinController animated : YES];로 바꿉니다. 작동해야합니다 ... –

+0

"self.navigationController"대신 "self"로 바뀌었지만 지금은 이렇게 불평하고 있습니다. "경고 : 'VinsViewController'가 '-pushViewController : animated :' '에 응답하지 않을 수 있습니다." –