0


我正在为复杂的 UITableView 寻找最佳解决方案。

我想要什么:
我有任意数量的部分
在本节中只有一个静态单元格,然后应该出现任意数量的动态单元格

我的数据存储在一些NSMutableArray中,我尝试了这样的想法:
在表格视图中组合静态和原型内容
但我不知道如何处理我的问题。那么有人可以给我一个提示或最佳实践吗?
更新: http: 1
//jsfiddle.net/konstheinrich188/HKkA8/ Fiddle 显示了我的数据的外观以及我正在尝试做的事情

这张图片显示了我想如何编写我的 tableview ......
我想要的是

4

3 回答 3

1

当您使用“静态”一词时,您真的是在谈论“uitableview 静态单元格”,还是“具有静态内容的单元格”?如果是前者;你为什么需要那个?如果是后者;如何在每个部分中测试这是否是该部分中的第一个单元格,然后呈现静态内容?对于所有其他单元格,显示动态内容:

if (indexPath.row == 0) {
    // First row in section. Display static content
    ...
} else {
    // Display dynamic content
    ...
}

出于什么目的需要静态单元格?

于 2013-08-24T14:44:13.097 回答
1

因此,经过一段时间的测试并听取您的想法和技术后,我解决了我的问题!
这是一个小代码:

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

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{

    UISprint*s = [mappedSprints objectAtIndex:section];
    return s._name;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    UISprint* s = [mappedSprints objectAtIndex:section];
    return [s.internalUserStorey count] + [s.externalUserStorey count] + 1;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == 0) {
        return 130;
    }
    return 80;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"Cell%d%d", indexPath.row, indexPath.section]];

            if (cell == nil) {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[NSString stringWithFormat:@"Cell%d%d", indexPath.row, indexPath.section]];
            }

    UISprint*s = [mappedSprints objectAtIndex:indexPath.section];


    if (indexPath.row == 0) {
        //Here is my first cell 
        //cell.textLabel.text =s._name;


    }
    else if(indexPath.row >= 0 && indexPath.row<=[s.internalUserStorey count]){

       //here are the cells for SubItem


    }

    else if(indexPath.row >= [s.internalUserStorey count]){


    //here are the cells for SubItem 2   

    }
    return cell;


所以谢谢大家!最佳康斯坦丁

于 2013-08-24T19:30:59.643 回答
-1

您可以使用一个 NSMuatableArray 并在其上添加引用,即

NSMuatableArray *arr=[NSMuatableArray alloc]init];

//section no 1 
[arr addObject:@"2"]; 

//section no 2 
[arr addObject:@"1"];

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

   switch(arr objectAtIndex[indexPath.row])
  {
  } 
}

您可以通过使用要设置单元格的引用来使用这种方式。

于 2014-05-20T11:57:41.383 回答