2012-09-27 5 views
-1

두 가지보기가 있습니다. 하나의보기는 등록보기입니다. 사용자가 등록 UIBarButtonItem을 클릭하면 해당 뷰로 이동합니다. 이보기에는 "Back"이라고하는 또 다른 UIBarbuttonitem이 있습니다. 사용자가 해당 버튼을 클릭하면 등록 버튼이있는 기본보기로 이동합니다. 그런 다음 사용자가 다시 가입 버튼을 클릭하면이 오류가 발생합니다.인스턴스로 전송 된 인식 할 수없는 선택자 오류

2012-09-26 19:22:53.256 Users[14763:c07] -[Registration signUp:]: unrecognized selector sent to instance 0x747e5b0 
2012-09-26 19:22:53.257 Users[14763:c07] *** Terminating app due to uncaught exception 

UsersViewController.h 

@interface UsersViewController : UIViewController 
@property (nonatomic, strong) Registration *registration; 

UsersViewController.m 
Signup event: 
    self.registration = [[Registration alloc]initWithNibName:@"Registration" bundle:nil]; 
    [self.view addSubview:self.registration.view]; 

Registration.h 
    @interface Registration : UIViewController 
    @property (nonatomic, strong) Registration *mainView; 

Registration.m 
Back button Event 
    self.mainView = [[Registration alloc]initWithNibName:@"UsersViewController" bundle:nil];  

[self.view의 addSubview : self.mainView.view]

+0

'등록'개체에 'signUp :'이라는 메서드가 있습니까? –

+3

당신이 이것을 검색했다면 12 가지 설명을 찾을 수 있습니다. 오류 메시지를주의 깊게 읽으면 설명없이 이해할 수 있습니다. 너의 숙제를해라! –

+0

인터페이스에서이 메소드가 없거나 인터페이스의 선언이 누락 된 등록 객체로 signUp 메시지를 보내고 있습니다. –

답변

-1

바 버튼을 누르면 처리 코드는 다음과 같아야합니다

- (IBAction)showRegistration:(id)sender 
{ 
    Registration *registrationViewController = [[Registration alloc] init]; 
    [self.navigationController pushViewController:registrationViewController]; 
} 

확실히 당신의 기본보기를 확인 컨트롤러는 내비게이션 컨트롤러에 내장되어 있으며 OS는 나머지 작업을 수행해야합니다. 등록보기 컨트롤러에는 사용자를 이전보기로 되돌아 가게 할 뒤로 버튼이 있습니다. addSubview는 일반적으로 이와 같은보기 사이를 탐색하는 데 사용되는 방법이 아닙니다. 스토리 보드를 사용하는 경우 당신은 또한

[self performSegueWithIdentifier:@"go to registration view"]; 

이 작업을 수행하는 방법은 무리가있어하지만 addSubview는 당신이 찾고있는 드로이드 아니라,

[self presentViewController:registrationViewController animated:YES]; 

를 사용하거나 할 수있다.

또한 제시된보기 컨트롤러에 발표자를 가리키는 속성을 제공하고 싶지 않습니다. Cocoa의 위임 디자인 패턴을 읽어야합니다. 등록보기 컨트롤러에 델리게이트 속성을 부여하고 MainViewController를 등록보기 컨트롤러의 델리게이트로 할당 한 다음 MainViewController에 대한 델리게이트 콜백 메소드를 구현하여 등록보기가 필요할 때 필요한 모든 작업을 수행하고자 할 것입니다 컨트롤러가 닫힙니다.

+0

어디서 내비게이션 컨트롤을 찾을 수 있습니까? 그것은 대상 아래인가? 그렇다면 그 이름은 무엇입니까? –

+0

오, 신경 쓰지 마라. 그냥 찾았 어 ;-) –

+0

고마워! 나는 이것을 사용한다고 생각한다. [self presentViewController : registrationViewController animated : YES]; 하지만 여전히 내 메인 뷰 컨트롤을 내비게이션 컨트롤러에 내장하는 방법을 모르겠다. 보여 주실 수 있어요? –

관련 문제