viewDidappear는 navigation Conroller일때 호출이 된다.
viewdidload를 할경우에는 프로그램이 실행할때 호출되어서 로딩이 길어진다.
그래서 view가 여러개 있고 클릭했을때 어떤작업?(data를 불러오는작업) 이 일어나게 해서 퍼포먼스를 향상 시키기로 했다.
-(IBAction) menuSelected:(id)sender
{
UIButton* menu = (UIButton*)sender;
if(menu.selected == YES)
return;
self.giftButton.selected = NO;
self.recentButton.selected = NO;
self.myButton.selected = NO;
self.popularButton.selected = NO;
menu.selected = YES;
UIViewController* vc = nil;
if(sender == recentButton)
{
vc = [menuViewControllers objectAtIndex:kRecentPostsIndex];
}
else if(sender == popularButton)
{
vc = [menuViewControllers objectAtIndex:kMostPopularPostsIndex];
}
else if(sender == myButton)
{
vc = [menuViewControllers objectAtIndex:kMyPostingsIndex];
}
else if(sender == giftButton)
{
vc = [menuViewControllers objectAtIndex:kTodayGiftIndex];
}
for(UIView* sv in contentView.subviews)
{
[sv removeFromSuperview];
}
[contentView addSubview:vc.view];
[vc viewDidAppear:FALSE];
}
이것은 메뉴를 선택했을시 해당 하는 뷰를 add하는 메소드이다.
[vc viewDidAppear:FALSE];
이것을 해주지 않았다면 viewDidappear는 호출되지 않는다.
view를 add한후 viewdidappear를 사용하고 싶을때 사용하자
참고 : http://stackoverflow.com/questions/2335722/problem-with-iphone-shakes-viewdidappear-isnt-called-when-loading-viewcontrolle