显示tableview的右侧部分

时间:2011-11-14 12:31:20

标签: iphone ios5 tableview uitableview

我有一个表格视图,我正在用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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

如果是我,我可能会将我的数据存储在2d数组中,然后您就可以拥有以下内容,

  • (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { //返回部分的数量。 return [self.2darray count]; }

  • (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [[self.2darray objectAtIndex:section] count]; }

这将为您提供正确数量的节和行。

,而不是试图弄乱你在这些方法中有多少部分
  • (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {   if([[self.2darray objectAtIndex:section] count]< = 0)       返回0;

    返回44; }

这是相当干净整洁的,无论您创建的行数和部分数如何,都可以正常工作。希望这会有所帮助。