문제

앱 대의원의 일환으로 UitabbarController가 있으며 사용자가 특정 탭 (즐겨 찾기)을 터치하고 테이블을 강제하여 데이터를 다시로드 할 때 트랩을 원합니다.

이 경우 모범 사례는 무엇입니까?

UITABBARDELEGATE 프로토콜을 내 앱 대의원에 추가하고 didSelectViewController 메소드를 구현했습니다. 여태까지는 그런대로 잘됐다. 메소드 내에서 ViewController를 얻으므로 제목 등을 확인하여 선택한 탭을 확인할 수 있습니다.

그런 다음 viewController의 uitableview에 reloadData 메시지를 보낼 수 있습니까? FavouritesviewController 클래스에서 메소드를 작성하고이를 호출하려고 시도했지만 작동하지 않습니다.

예제 코드 :

#pragma mark UITabBarController delegate methods

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
   // If the favourites tab is pressed then reload the data
   if (viewController.title = @"Favourites")
   {
      if ([viewController respondsToSelector:@selector(reloadFavourites:)]) 
      {
         [viewController reloadFavourites];
      }
   }
} 
도움이 되었습니까?

해결책

추가해야 할 것 같습니다 [UITableView reloadData] TableViewController에 viewWillDisplay 방법. 이렇게하면 테이블이 표시 될 때마다 테이블이 다시로드됩니다.

Reload를 강요하려면 TableView가 이미 표시되면 OP에서 작성한 메소드에서 Reload를 호출하면 작동합니다.

다른 팁

다음 코드는 테이블을 새로 고쳐야합니다 매번 보기가 나타납니다.

-(void)viewWillAppear:(BOOL)animated
{
    [[self tableView] reloadData];
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top