可以动态地使用numberOfSectionsInTableView吗?

时间:2011-11-10 16:16:50

标签: iphone uitableview ios5 tableview

我可以动态获得行数吗? 我正在尝试删除tableView部分标题,我不知道如何...我已经教过一个解决方案是改变部分的数量。

现在我的numberOfSectionsInTableView看起来像:

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

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    beTribesAppDelegate *appDelegate = [UIApplication sharedApplication].delegate;

    switch (section) {
        case 0:
            return [appDelegate.firstArray count];
        case 1:
            return [appDelegate.secondArray count];    
        default:
            return 0;
    }
}

像这样设置标题部分:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{ 
    sectionTitles = [[NSMutableArray alloc] init];

        [sectionTitles addObject:@"firstSection"];
        [sectionTitles addObject:@"secondSection"];
    NSString *sectionText = [sectionTitles objectAtIndex:section];
    return sectionText;
}

3 个答案:

答案 0 :(得分:6)

我不确定理解这个问题,因为答案似乎微不足道:只需更改实现以返回一些动态值并完成,对吧?

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return self.nbSections;
}

nbSections是您要为其分配所需值的属性,因此您可以随时更改它。那么问题是什么呢?

PS:当然,请调用[tableView reloadData]来重新计算tableView的内容,并明确考虑新值......也许这就是你错过的东西?

答案 1 :(得分:2)

要删除节标题,必须将标题高度设置为0,如此

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    switch (section) {
        case 0:
            return 0;
        default:
            return 44;
    }
}

此示例将删除第一个部分标题,其他所有标题将设置为44。

答案 2 :(得分:0)

要做的第一件事就是将sectionTitles数组移动到视图控制器上的属性中,并在init方法中初始化它。

然后当你想改变一个部分的标题时改变数组中的值并调用[tableView reloadData]

是否要从tableView或标题中删除整个部分?如果您只想删除标题,请将数组中的项设置为@“”

如果要删除该部分,请从sectionTitles中删除该项,并将numberOfSectionsInTableView方法更改为:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        return [sectionTitles count];
}