2010-03-22 4 views
7

일부 데이터로 채워진 UITableViewController가 있습니다. 데이터가 다시 비어있게되면 분명히 테이블이 비어 있습니다. 이 케이스를 처리하고 "데이터 없음"이있는 UILabel과 같은 것을 사용하기에 적합한 방법은 무엇입니까?UITableViewController에서 비어있는 UITableView 처리하기

나는 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section을 사용했지만 조금 성가신 것으로 입증되었으며, 더 이상이 작업을 수행하기에 가장 좋은 장소는 아닙니다.

답변

1

대신 데이터가 없을 때 tableview가 숨겨졌습니다. 단순히 UITableView를 서브 클래스 화하고 reloadData를 오버라이드하십시오. 텍스트 레이블을 적절하게 표시하거나 숨겨 데이터를 표시하지 않을 수도 있습니다.

- (void)reloadData { 
    [super reloadData]; 
    BOOL dataPresent = FALSE; 
    int sections = [self.dataSource respondsToSelector:@selector(numberOfSectionsInTableView:)] ? [self.dataSource numberOfSectionsInTableView:self] : 1; 
    for (int i = 0; i < sections; i++) { 
     if ([self.dataSource tableView:self numberOfRowsInSection:i] > 0) { 
      dataPresent = TRUE; 
      break; 
     } 
    } 
    self.hidden = !dataPresent; 
    return; 
} 
5

콘텐츠를 사용할 수있을 때 UITableView 만 표시하고 콘텐츠가 준비 될 때까지 UIView에 '콘텐츠 없음'사용 가능한 이미지가 표시되도록 철회를 바꿀 수 있습니다.

콘텐츠를 가져 와서 표시 할 준비가되면 'no content'이미지를 통해 UITableView를 뷰 계층 구조에 애니메이션으로 만들거나 데이터를 다시로드하도록 요청하십시오. 그러면 데이터 소스 델리게이트 콜백을 통해 작업이 시작됩니다.

최소한이 방법을 사용하면 데이터가없는 테이블 뷰를 표시하고 UITableViewDataSource 콜백 메소드와 관련하여 걱정할 필요가 없습니다.

+0

나는 그것을 좋아한다. 그래서 Navigation Based 앱으로 시작하여 UITableViewController를 갖게되었습니다. 그래서 tableView를 숨기면 어떻게 뷰에 항목을 추가합니까? InterfaceBuilder를 열면 나는 tableview 만 볼 수 있습니다. 혼란 스럽네. – Ternary

1

테이블이 비어있을 때 UITableView의 backgroundView 속성을 적절한 것으로 변경하지 않는 이유는 무엇입니까? tableView 속성을로드하거나 reloadData 할 때마다 backgroundView 속성을 업데이트 할 수 있습니다. backgroundView는 자동으로 tableView의 크기로 크기가 정해지며 빈 경우에 필요한 그림, 텍스트, 컨트롤을 갖도록 사용자 정의 할 수 있습니다.

관련 문제