2011-04-30 4 views
0
- (id)initWithStyle:(UITableViewStyle)style { 
    // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. 
    self = [super initWithStyle:style]; 
    if (self) { 
     myArray = [[NSMutableArray alloc]init]; 
     NSLog(@"ARRAY INITIALIZED"); //THIS NEVER OCCURS 
    } 
    return self; 
} 
+0

그리고 NSLog를 함수의 시작 부분에두면 어떻게됩니까? – mathk

+0

함수가 호출되지 않습니다. 나는 아무것도 얻지 못한다. – jini

답변

1

난 그냥 추천 초기화 코드를 넣어 것입니다 .... IB 구축, 그래서 내 사용자 정의 컨트롤러는 XIB에서 호출하고 난 initWithCoder를 오버라이드 (override) 할 필요가 viewDidLoad 또는 viewDidAppear. alloc을 여러 번 사용하지 않고 (프로세스에서 메모리가 분리되어 있음) 확인해야하지만 프로그래밍 방식으로 xib에 리깅되어 있는지 여부와 관계없이 호출됩니다.

- (void)viewDidLoad 
{ 
    if(!myArray) 
    { 
     myArray = [[NSMutableArray alloc] init]; 
    } 
} 
1

내가 정말 주어진 코드에서 이야기하지만, 프로그래밍 컨트롤러를 제작하는 경우, 당신은 당신의 서브 클래스 초기화하고 있는지 확인 할 수 없습니다

[[MyCustomTableViewController alloc] initWithStyle:style]; 

보다는 UITableViewController :

[[UITableViewController alloc] initWithStyle:style]; 
3

프로그래밍 방식으로 테이블을 만들거나 Interface Builder에 있습니까? 인터페이스 빌더에있는 경우 대신 -(id) initWithCoder:(NSCoder *)coder을 덮어 써야합니다.

+0

난 그냥 서브 클래 싱입니다. @interface InboxTableViewController : UITableViewController { \t \t NSMutableArray * myArray; } – jini

관련 문제