我有一个表视图,我正在切换它的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;}
这是相当整洁的,并且无论您创建的行和节的数量如何都可以工作。