iPhone App2011. 9. 23. 15:07
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 
Posted by 동동(이재동)