2010-04-02 7 views
1

작업을 거부하는보기의 단추가 있습니다. X-Code의 빈 기본보기 응용 프로그램에서 작업하고 있지만 어떤 응용 프로그램에서도 작동하지 않습니다. 대신 다음 오류가 표시됩니다. '- [UIViewController에 showVicInfo :] : *** 인식 할 수없는 선택기 예를 0x3c084f0로 전송' :'NSInvalidArgumentException'UIButton IBAction 오류

디버거 ISN

때문에, 이유 캐치되지 않는 예외 'NSInvalidArgumentException'응용 프로그램 종료 어떤 도움도. 나는 파일의 소유자에게 (다른 방법이 아니라) 버튼을 연결했는지 확인했다. 아래는 액션 코드입니다. 중단 점이 거기에 도달하지 않기 때문에 경고보기가 아니라는 것을 알고 있습니다.

about.m

@interface about : UIViewController { 

} 

-(IBAction)showVicInfo:(id)sender; 

about.h

-(IBAction)showVicInfo:(id)sender { 
    UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"No Internet Connection" message:@"You require an internet connection via WiFi or cellular network for iFirelert to work." delegate:self cancelButtonTitle:@"OK, thanks" otherButtonTitles:nil]; 
    [myAlert show]; 
    [myAlert release]; 
} 

업데이트 : 참고로이 내가 도움이된다면, 버튼을 만드는 방법에 대해 갔다 방법이다.

  1. 만든 새 뷰
  2. 추가 (파일> 새 파일> UIViewControllerSubclass 인터페이스에 대한 XIB/w) - (IBAction를)은 showInfo (ID) 보낸 사람;
  3. 추가를 about.h하는
  4. - (IBAction를) showVicInfo (ID) 보낸 사람 { UIAlertView * myAlert [[UIAlertView ALLOC] initWithTitle = "인터넷에 연결"메시지 @ "@ 당신은 필요 WiFi를 통한 인터넷 연결 또는 iFirelert 용 셀룰러 네트워크 작동. " 위임 : 자기 cancelButton 제목 : @ "OK, thanks" otherButton 제목 : nil]; [myAlert show]; [myAlert release]; } about.m하는
  5. About.xib 인터페이스 빌더에 문을 연,
  6. 은 Ctrl 키를 클릭하여 파일의 소유자 속성에 버튼을하여 -showVicInfo 액션에있는 버튼을 엮은
  7. 보기 (안에 직사각형 버튼을 드래그
  8. 다른 방법으로).
  9. 파일 소유자가 "about"클래스로 설정되어 있는지 확인했습니다.

그런 다음 X 코드에서 오류가 발생하여 빌드되고 실행됩니다.

업데이트 2 : 알았습니다. 기존 프로젝트의 설정이나 무언가 여야합니다. 다른 X 코드 프로젝트에서 작동하는 두 개의 클래스 파일과 XIB 파일을 복사했지만 단추 또한 기존 앱에 동일한 오류가 발생합니다.

+1

어떻게 당신은'about' 인스턴스를 생성하는 공개하지 않는 경우

AnswerStructureViewController* questionVC = [[AnswerStructureViewController alloc] initWithOpts:dict]; [window addSubview:questionVC.view]; [questionVC release]; 

다 괜찮습니다? 대신 당신은 평범한 오래된'UIViewController 대신 초기화 '하는 것처럼 들립니다. 또한, 이것은 클래스에 대한 끔찍한 이름입니다. 최소한 클래스 이름을 대문자로 만드십시오. 아마도'AboutController'가 좋을 것입니다. –

+0

인터페이스 빌더에서 about.xib로로드 할 NIB를 설정했으며 이름을 바꿀 것입니다. 작동하지 않을지를 확인하는 테스트 클래스 일뿐입니다. – Graeme

+0

about.xib의 ViewController 클래스는 무엇입니까? 그것은 네 번째 탭 (나는 제목, 신분을 잊지?)에있어,하지만 당신은 명령 4 키와 함께. 수업은 "약"이어야합니다. – progrmr

답변

1

저는 Squeegy가 옳다고 생각합니다. 귀하의 VC는 일반적인 오래된 UIViewController이고 showVicInfo를 허용하지 않습니다.

IB에서 ViewController의 클래스 (command-4)를 설정 했습니까?당신이 스스로를 할당하는 경우

또는, 당신은 다음과 같이 그 일을하고 있습니다 :

vc = [UIViewController alloc]; // wrong class 

당신이이 일을해야 할 때 : 오류 메시지가 showVicInfo이되고 있음을 말하고있다

vc = [about alloc];  

0x3c084f0으로 전송되었습니다. 0x3c084f0 인 경우 사용자가 만든보기 컨트롤러의 주소 (위의 "vc"와 같은 값)를 확인하십시오. 물론 가치가 다음에 다를 수 있습니다,하지만 당신이 그것을 만들 때 그것을 NSLog 다음 오류 메시지와 그것이 무엇을 가리키는 지 확실히 알고 비교하십시오.

또한 IB에서 버튼을 올바르게 연결했는지 확인하십시오. 단추를 선택하고 단추 연결 탭으로 이동하면 연결이 있어야합니다. Touch Up Inside는 행동 기능에 연결해야합니다. IB에서 showVicInfo에 연결해야합니다.

+0

불행히도 약으로 설정됩니다. 다른 아이디어? – Graeme

+0

버튼을 어떻게 만들고 연결을 추가했는지에 대한 위의 업데이트를 추가 했습니까? – Graeme

+0

왜 showInfo를 가지고 있습니까 : .h 및 showVicInfo : .m 파일에 있습니까? 이름은 showInfo 또는 showVicInfo 둘 다 일치해야합니다. showVicInfo에 대한 오류 메시지가 긍정적입니까? showInfo라고 할 수 있습니까? – progrmr

2

같은 오류가있었습니다. 문제는 viewController를 릴리스했다는 것입니다. 당신이

관련 문제