UIViewController의 initWithNibName에서 초기값을 설정하고, setSomthing() 류의 함수를 외부로 노출하여 실제 화면에 보여지기 전에 something 값을 얻어서 화면에 반영하려고 했다.
즉, 기대하는 호출 순서는 initWithNibName -> setSomething -> viewDidLoad 가 되겠다.
하지만 실제로는 initWithNibName -> viewDidLoad -> setSomething 으로 불려지더라... -_-;
initWithNibName 안에 다음과 같은 코드가 있었는데, 크기를 구하는 것 때문에 initWithNibName 처리 중에 viewDidLoad를 호출해버리는 것 같다. 레이아웃이 이루어진 다음에 구할 수 있는 값은 viewDidLoad 안에서 사용해야 되겠다.
EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.tableView.bounds.size.height, self.view.frame.size.width, self.tableView.bounds.size.height)]; view.delegate = self; [self.tableView addSubview:view]; _refreshHeaderView = view;
위 코드는 initWithNibName 쪽이 아니라 viewDidLoad 쪽에 있어야 한다.
'iOS & Android' 카테고리의 다른 글
Android Pre Compiler NPE (0) | 2013.01.30 |
---|---|
Objective-C에서 @property로 선언한 변수의 기본값 설정 (0) | 2013.01.12 |
Android Dependencies 에 src, javadoc 추가하기 (0) | 2012.10.10 |