2011-11-14 2 views
0

테이블 뷰가 있으며 dataDource을 두 개의 UIButtons (탭과 같은)으로 토글하고 있습니다.테이블 뷰의 오른쪽 섹션을 표시합니다.

- (IBAction)dataToggler:(id)sender { 
    int buttonTag = ((UIButton*)sender).tag; 

    if(_firstTab.selected && buttonTag != 1){ 

     AppDelegate *myAppDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
     myAppDelegate.isFeatured = TRUE; 
     [myAppDelegate loadEvents]; 

     numberOfSections = 1; 

     _firstTab.selected = NO; 
     _secondTab.selected = YES; 

    } else if(_secondTab.selected && buttonTag != 2){ 

     AppDelegate *myAppDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
     myAppDelegate.isFeatured = FALSE; 
     [myAppDelegate loadEvents]; 

     numberOfSections = 2; 

     _firstTab.selected = YES; 
     _secondTab.selected = NO; 
    } 
    [tableView reloadData]; 

} 

매번 버튼 중 하나를 클릭하면 내 xml이 구문 분석되어 별도의 배열에 추가됩니다. 배열은 이벤트 목록을 포함합니다 (예 : 현재 이벤트가있는 첫 번째 섹션과 나머지 이벤트가있는 두 번째 섹션).

내가 가지고있는 문제는 두 번째 섹션이 있는데 두 번째 섹션이 있는데 가끔 내 첫 번째 섹션이 비어있어 비어있는 경우 해당 섹션을 표시하고 싶지 않은 것입니다. ... 내 코드 파일을 간단히 살펴 보시기 바랍니다

는 지금 내 두 번째 탭 (버튼) 나는 빈 테이블을 얻고을 선택하면 ...

내 코드 파일

은 다음과 같습니다 myViewControllermyAppDelegate

당신의있는 tableView의 데이터 소스에서

답변

1

는이 방법을 구현 : 그것은 나를라면 다음 다음을 할 수있을 것입니다, 아마 2 차원 배열에 내 데이터를 저장할 것

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
     return 2; 
    } 


- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    if ([self tableView:tableView numberOfRowsInSection:section] > 0) { 
     // INSERT YOUR HEADER STRING "times" array here. 
     return [NSString stringWithFormat:@"section %d",section]; 
    } else { 
     return nil; 
    } 
    } 
+0

빈칸의 ​​경우 하나의 섹션 만 갖고 싶습니다. 실제로는 그 카운트가 0 ... –

+0

일 경우 사라질 첫 번째 탭과 두 번째 탭을 갖게됩니다. 그러나 첫 번째 탭이 선택되었을 때 버그가 발생하여 첫 번째 섹션의 제목이있는 빈 테이블이 나타납니다. 어떤 단서? –

+0

아, numberOfRowsInSection 및 cellForRowAtIndexPath에서 섹션 번호가 0 또는 1 인 경우 조정해야합니다. 즉, 섹션이 하나만있는 경우 섹션 1이 아니라 섹션 0이됩니다. 그리고 if 2 개의 섹션이 있으며 섹션 0과 섹션 1이됩니다. – Rayfleck

1

  • (NSInteger) numberOfSectionsInTableView : (jQuery과 *)있는 tableView 는 { // 섹션의 수를 돌려줍니다. return [self.2darray count];

  • }
  • (NSInteger)를 tableView (jQuery과 *)를 tableView numberOfRowsInSection (NSInteger) 섹션 { 창 [self.2darray objectAtIndex : 부] 카운트]; }

이렇게하면 정확한 섹션 및 행 수를 얻을 수 있습니다. (jQuery과 *)있는 tableView heightForHeaderInSection : (NSInteger) 섹션 { 경우 ([[자기 오히려 주위에 이러한 방법에서 얼마나 많은 부분 내가 추가 할 엉망으로

  • (CGFloat)있는 tableView를하는 것보다. 2darray objectAtIndex : 섹션] 개수] < = 0) return 0;

    return 44; }

이 합리적으로 단정하고 깔끔 당신이 만들 행과 섹션의 수에 관계없이 작동합니다. 희망이 도움이됩니다.

+0

또한 무엇을하는지에 따라 UITableViewDataSource를 구현하는 두 개의 개별 데이터 소스가 있고 버튼이 전환 될 때 tableView의 데이터 소스를 변경하여 이들 사이에 데이터 소스를 변경할 수 있습니다. 이것은 좀 더 구체적인 경우이며 일반적으로 표현되는 데이터가 다른 경우에만 수행 할 것입니다. –

관련 문제