2012-03-22 4 views
0

저는 rootViewController가 있고 프로그래밍 방식으로 생성 된 UIButton을가집니다. 이 UIButton 다른보기 컨트롤러를 표시 할 싶습니다. 어떤 이유로 든 다음 오류로 인해 충돌합니다.메서드가 호출 될 때 프로그래밍 방식으로 생성 된 UIButton

Undefined symbols for architecture i386:
"_OBJC_CLASS_$_TutorialViewController", referenced from: objc-class-ref in RootViewController.o ld: symbol(s) not found for architecture i386 collect2: ld returned 1 exit status

여기에 Info UIButton을 생성하는 코드가 있습니다. 이 코드는에는 loadView 방법에 있습니다

// Create a Button to get Help   
UIButton *helpButton = [UIButton buttonWithType:UIButtonTypeInfoDark ] ; 
CGRect buttonRect = helpButton.frame; 

// CALCulate the bottom right corner 
buttonRect.origin.x = self.view.frame.size.width - buttonRect.size.width - 8; 
buttonRect.origin.y = buttonRect.size.height - 8; 
[helpButton setFrame:buttonRect]; 

[helpButton addTarget:self action:@selector(doHelp:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:helpButton]; 

} 

가 여기에 또 다른 뷰 컨트롤러에 transisition 할 작업입니다 : 어떤 도움

- (IBAction)doHelp:(id)sender{ 
NSLog(@"help button pressed"); 

TutorialViewController *sampleView = [[[TutorialViewController alloc] init] autorelease]; 
[sampleView setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
[self presentModalViewController:sampleView animated:YES]; 
} 

감사합니다.

+0

내 an을 사용해 보셨습니까? – Krunal

+0

"initWithNibName : bundle :"대신 "init"으로 뷰 컨트롤러를 초기화하는 이유는 무엇입니까? – viggio24

+0

init는 괜찮습니다. 최악의 경우 viewController에는 뷰가없고 검정색으로 표시됩니다. 어쩌면 그는이 init 메소드에서'initWithNibName : bundle :'을 호출 할 것입니다. 나는 때때로 이것을한다. –

답변

2

확인, 작성해야합니다 생각합니다. 대신 (IBAction)doHelp:(id)sender

+2

에 연결된 작업의 경우'(IBAction) '대신'(void)'를 사용하거나 TutorialViewController.m을 선택하고 오른쪽 사이드 바에서 "대상 멤버쉽"을 선택하는 것은 잘못된 개념입니다. –

+0

@MatthiasBauch Nifty! 그것에 대해 몰랐어요 :) – adig

+0

당신이 옳았어요! TutorialViewController 파일을 프로젝트에 복사했습니다. 복사하는 동안 무언가 잘못되었을 것입니다 ... 도와 줘서 고마워! – hanumanDev

-1

내가 대신 (IBAction), 당신은 당신이 목록에서 TutorialViewController.m 파일이 컴파일 소스 목록에서 빌드 페이즈에 당신의 목표 설정에서 (void)

+0

IBAction이 void로 정의되어 있지 않습니다. #define IBAction void – viggio24

+0

in - (void) doHelp : (id) sender {....} 시도했습니다. 같은 오류. – hanumanDev

+0

하지만 버튼이 IB가 아닌 ... 생성되었으므로 대신 (void) 대신 (IBOutlet)을 써야한다고 생각합니까 ?? – Krunal

1

당신이 (void)doHelp를 작성해야합니다 ....이 시도 :

0

당신은 .H 파일이 아닌하는 .m 파일을 #importing 있습니까?

UIButton에 문제가 없으므로 TutorialViewController 클래스가 올바르게 컴파일되지 않는 문제가 있습니다.

5

adig가 맞을 수도 있습니다.

또한 기술적으로 "충돌"이 아닙니다. 이 링커 오류로 "빌드가 실패합니다." "ld는 1 개의 종료 상태를 반환했습니다"라고했기 때문에 링커 오류라고 말할 수 있습니다. ld는 링커입니다.

XCode는 코드를 실행하기 전에 코드를 컴파일하고 연결합니다. 컴파일이나 링크 중 실패하면 "실패"가 아니라 "빌드 실패"입니다. 크래시는 응용 프로그램이 빌드되었지만 런타임에 갑자기 중지 된 경우입니다. 이에 대한 하나의 공통 원인은 nil 포인터에 액세스하는 것입니다.

0

매우 기본이지만 somtime 우리는 그것을 놓칠 수 있습니다 :) .h 파일에서 같은 방법을 선언 했습니까?

관련 문제