2012-04-10 16 views
1

xcode 4.3에서 탭보기 응용 프로그램을 사용하고 있습니다.내 생성자를 입력하지 마십시오

임 저는 단순히 내 FirstViewController .h 파일에서 선언 한 일부 변수를 초기화하려고합니다. 메신저 내 .m 파일에서 생성자를 생성하여이를 시도합니다.

.H 파일 :

#import <UIKit/UIKit.h> 

@interface FirstViewController : UIViewController { 

    IBOutlet UITextField *currentGuess; 
    IBOutlet UILabel *attemptsMade; 
    IBOutlet UILabel *attemptsLeft; 
    IBOutlet UITextView *hints; 
    int numberToGuess; 
    int numberOfGuessesMade; 
    int maxGuesses; 
    int maxGenNumber; 

    NSMutableArray *allGuesses; 


} 

- (id) init; 

@end 

하는 .m 파일

#import "FirstViewController.h" 

@interface FirstViewController() 

@end 

@implementation FirstViewController 

    - (id) init { 
     NSLog(@"entered constructor!"); 

     if(self = [super init]) 
     { 
      numberToGuess = 0; 
      numberOfGuessesMade = 0; 
      maxGuesses = 3; 
      maxGenNumber = 10; 
     } 

     return self; 
    } 
+0

아래에서 시도한 답변은 대신 viewDidLoad를 사용하여 종료되었습니다. –

답변

3

UIViewController는 init 메소드로 초기화하는 것이 적절하지 않습니다. (void)awakeFromNib 또는 -(void)viewDidLoad - 당신이 XIB 파일에서 구축하는 경우 Normaly 당신은 당신은 당신의 초기화 코드를 삽입하기 위해 필요한이

처럼보다, - (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle

이 필요합니다.

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle { 
    NSLog(@"entered constructor!"); 

    if(self = [super initWithNibName:nibName bundle:nibBundle]) 
    { 
     numberToGuess = 0; 
     numberOfGuessesMade = 0; 
     maxGuesses = 3; 
     maxGenNumber = 10; 
    } 

    return self; 
} 

그리고 기억 : 귀하의 경우 다음

@implementation FirstViewController

- (id) awakeFromNib { 
    NSLog(@"entered XIB constructor!"); 

    numberToGuess = 0; 
    numberOfGuessesMade = 0; 
    maxGuesses = 3; 
    maxGenNumber = 10; 

} 

경우 비 XIB이 같은

뭔가. init은 OO 클래스에서 배울 때 "실제"생성자가 아닙니다.

0

당신이 펜촉을 사용하는 경우. awakeFromNib 메서드가 호출됩니다. 또한 initWithNibName, initWithframe 등등과 같은 init 메소드의 사용 변형 여부를 확인하십시오.

0

VC를 작성할 때 코드를 게시 할 수 있습니까? 당신이 XIB 초기화에서 그것을 할 경우 다시 쓰기를해야 그 대신에, 호출되지 않습니다 :

initWithNibName 
1

UIViewController documentation에서 언급 한 바와 같이, UIViewController에 대한 지정된 초기화는 initWithNibName:bundle:입니다. 하지만 코드 또는 스토리 보드의 일부로보기 컨트롤러가 생성되는 방식에 따라 이는 호출되지 않을 수도 있으며 대신 initWithCoder: 일 수 있습니다.

관련 문제