显示tableview的右边部分



我有一个表视图,我正在切换它的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被解析并添加到单独的数组;数组包含事件列表(例如:第一部分包含现在的事件,第二部分包含其余的事件)。

我遇到的问题是当我选中第二个按钮时我有两个section但有时我的第一个section是空的所以如果它是空的我不想显示那个section;请快速查看我的代码文件…

现在,如果我的第二个选项卡(按钮)被选中,我得到一个空表…

我的代码文件是:myViewController和myAppDelegate

在tableView数据源中,实现这个方法:

 - (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;
     }
  }

如果是我,我可能会将我的数据存储在一个2d数组中然后你将能够有以下内容,

  • (NSInteger) numberOfSectionsInTableView: (UITableView *)视图{//返回节数。回归自我。2 darray数);}

  • (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{返回[[自我。2 .数组objectAtIndex:section count;}

这将为您提供正确的部分和行数。与其纠结于这些方法中有多少节我还不如添加,

  • (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{如果([[自我。2 .数组objectAtIndex:section count <=0)返回0;

    返回44;}

这是相当整洁的,并且无论您创建的行和节的数量如何都可以工作。

最新更新