2010-12-08 11 views
1

그래서 presentmodalviewcontroller를 사용하여 ipad 앱의 활성보기를 변경합니다. 그러나 단추로 트리거되는 ibaction에서 문 [self presentModalViewController:createCharacter animated:NO];을 사용하여 변경하려고 할 때. 그러나 'createCharacter'전에 예상되는 식을 말하는 오류가 발생합니다. createCharacter는 내가 만든 사용자 정의보기 컨트롤러입니다 ... 아무도 내가 뭘 잘못하고 있는지 알아? 당신은 더 이상 관련 코드를 필요로하는 경우 단지 감사오류 : 'createCharacter'앞의 예상 표현

알려

추가 관련 코드 :

#import "createCharacter.h"; 


-(IBAction) buildCharacter{ 
    [self presentModalViewController:createCharacter animated:NO];  
} 

createCharacter.h :

#import <UIKit/UIKit.h> 
#import <Foundation/Foundation.h> 

@interface createCharacter : UIViewController { 
    IBOutlet UIView *view; 
} 

@end 
+1

'createCharacter'를 로컬 var 또는 인스턴스 var로 선언하고 초기화 했습니까? – BoltClock

+0

createCharacter라는 다른 변수/기능/모르는 소리가 들립니다.그렇지 않은 경우 표시 한 행 주위에 코드 줄을 표시하십시오. –

+0

나는 추측하지 않는다. .. 나는 아직도 그것을하기 위해 갈 것 인 방법을 배우고있다? – Joe

답변

1

내가 보는 몇 가지 코드를보고 싶어요 , 그리고 아마도 그것 없이는이 충고는 틀릴 것이다.하지만 내 경험상 나는 항상 단일 인수로 IBActions를 사용했고, 그 인수는 항상 발신자 였기 때문에 '

-(IBAction) presentNewController:(id)sender` 

여기서 sender는 눌린 버튼입니다. 당신은 할당하고 밀어 넣 전에 createCharacter를 초기화 할 필요가

// In your current view controller, the target where you wired up the button 
-(IBAction) presentNewController:(id)sender 
{ 
    if([sender isEqual:<whatever button you expect>]) 
    { 
     CustomController *con = [[[CustomController alloc] init] autorelease]; 
     [selfpresentModalViewController:con animated:YES]; 
    } 
} 
+0

위의 createCharacter.h 코드를 추가하면 내 오류가 제거되었지만 프로그램 수신 신호 "sigabrt"로 인해 충돌이 발생하고이 경고 메시지가 표시됩니다. "Reciever 'createCharacter는 전달 클래스이며 이에 해당합니다 @interface 존재하지 않을 수도 있습니다 " – Joe

+0

잘 작동합니다 있지만보기 컨트롤러 지정된 초기화 프로그램 - (id) initWithNibName : (NSString *) nibNameOrNil 번들 : (NSBundle *) nibBundleOrNil; – Rog

+0

Hey Joe, forward declare 경고는 클래스를 가져와야 함을 의미합니다. 그래서 파일의 맨 위에 # CustomController.h를 가져 오십시오. – MahatmaManic

0

: 당신이 IB에서 버튼 누름을 감지하는 것과 같은 방법을 사용하면 무언가 같이

는 다음 코드에서 당신이 싶은 것은 보기.

createCharacter *customView = [[createCharacter alloc] initWithNibName:yourNibNameORnil bundle:yourBundleNameORnil]; 
[self presentModalViewController:customView animated:YES]; 
[customView release]; 
+0

귀하의 코드를 시도하고 이전 대답과 같은 일을 ... 아래 내 의견을 참조하십시오 – Joe

+0

NIB 파일이 viewController와 관련된 있나요? 당신은 그것을 초기화하는 방법과 뷰 컨트롤러의 init 메소드로 질문을 편집 할 수 있습니까? 인터페이스 빌더를 통해 nib 파일의 뷰 컨트롤러에 뷰를 연결해야한다고 생각하지만 잘못된 것일 수 있습니다. – Rog

0

당신이 presentModalViewController에 클래스를 보내고있는 것으로 나타납니다 : createCharacter 가정

은 뷰 컨트롤러 애니메이션 :. Rog가 보여준 것처럼 클래스를 초기화해야합니다. MahatmaManic의 답변에 관해서는, 왜 당신의 오류를 없애고 있는지 전혀 모르겠다. 그는 OS X에 맞지만 iOS에는 인수가 필요하지 않습니다.

은 여전히 ​​로저의 예를 다음과 후 오류가 발생 될 수있는 몇 가지 이유가 있습니다

  1. 당신은 이미 초기화 된 의미 createCharacter라는 이름의 변수를 가지고있다. 이 경우 클래스 이름을 CreateCharacter로 변경하십시오. 클래스는 보통 대문자이므로 변수와 혼동하지 않도록합니다.
  2. createCharacter 헤더 파일을 제대로 가져 오지 못했습니다. XCode에서 파일 이름을 변경하면 실제로 파일 이름이 변경되지 않습니다. 새 이름을 사용하여 파일을 가져 오려고하면 파일이 작동하지 않습니다.
  3. 초기화 코드가 올바르지 않습니다. Rog의 예에서는 기본 인수 이름을 사용했습니다. yourNibNameORnil을 NIB 파일의 이름으로 변경하거나 NIB를 사용하지 않는 경우에는 nil로 변경해야합니다. NIB가 응용 프로그램 번들에 있다고 가정하면 yourBundleNameORnil을 nil로 변경해야합니다. 다음은 NIB가 응용 프로그램에 있고 이름이 createCharacter.xib라고 가정하는 예제입니다.

    createCharacter * customView = [[createCharacter alloc] initWithNibName : @ "createCharacter"번들 : nil];