复杂的UITableView与原型单元格,部分

时间:2013-08-24 14:27:52

标签: ios objective-c uitableview storyboard


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

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

我的数据存储在一些 NSMutableArray 中,我尝试过这样的想法:
Combine static and prototype content in a table view
但我不知道如何处理它与我的问题。 那么有人可以给我一个暗示或最佳实践吗? 更新1
http://jsfiddle.net/konstheinrich188/HKkA8/小提琴显示我的数据看起来如何以及我尝试做什么 这张照片显示了我想如何编写我的tableview ...
 What i want

3 个答案:

答案 0 :(得分:1)

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

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

您需要静电电池的目的是什么?

答案 1 :(得分: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;


谢谢大家! 康斯坦丁最佳

答案 2 :(得分:-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])
  {
  } 
}

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