两个动态部分的单元格文本

Posted

技术标签:

【中文标题】两个动态部分的单元格文本【英文标题】:cell text for two dynamically sections 【发布时间】:2011-11-11 13:29:01 【问题描述】:

我有两个 tableView 部分,有时第一个部分没有任何数据,所以第二个现在是第一个。

在我的 numberOfSectionsInTableView 方法中,我正在计算我的第一个数组:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if (appDelegate.firstArray.count == 0) 
    numberOfSections = 1;
 else 
    numberOfSections = 2;

return self.numberOfSections;

numberOfSections 它是我的头文件中的一个 int

这是我为单元格配置文本的方式

switch (indexPath.section) 
    case 0:
    
        MyClass *inFirstArray = [appDelegate.firstArray objectAtIndex:indexPath.row];
        cell.detailTextLabel.text = inFirstArray.title;
        break;
    
    case 1:
    
        Event *inSecondArray = [appDelegate.secondArray objectAtIndex:indexPath.row];
        cell.detailTextLabel.text = inSecondArray.title;
        break;    

    default:
        break;
    


问题是如果我的 firstArray 计数等于 0,我的 secondArray 中没有任何文本...

更新

也有这个方法

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


    //I'm realeasing it into dealloc
    sectionTitles = [[NSMutableArray alloc] init];

    [sectionTitles addObject:@"first ArrayTitle"];
    [sectionTitles addObject:@"second ArrayTitle"];
    NSString *sectionText = [sectionTitles objectAtIndex:section];
    return sectionText;

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

    //Adding a custom background image for table section header
    NSString *title = [times objectAtIndex:section];
    UIView *customView = [ [ [UIView alloc] initWithFrame: CGRectMake(0.0, -5.0, 320.0, 25.0) ] autorelease ];
    [customView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"tableBackground.png"]]];
    UIButton *button = [ [ [ UIButton alloc ] initWithFrame: CGRectMake(-9.0, 5.0, 320, 27.0) ] autorelease ];
    button.tag = section;
    [button setImage:[UIImage imageNamed:@"header_section_background.png" ] forState: UIControlStateNormal ];
    button.highlighted = NO;
    button.adjustsImageWhenHighlighted = NO;
    UILabel *label = [ [ UILabel alloc ] initWithFrame:CGRectMake(15.0, 5.0, 45, 22.0) ];
    label.alpha = 1.0;
    label.backgroundColor = [UIColor clearColor];

    label.text = title;
    label.textAlignment = UITextAlignmentRight;

    [customView addSubview: button ];
    [customView addSubview:label ];
    [customView sendSubviewToBack:button];

    return customView;

【问题讨论】:

【参考方案1】:

始终为您的numberOfSections 返回 2。对于您的numberOfRowsInSection,请执行以下操作:

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

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];    
    if (section == 0)
        return [appDelegate.firstArray count];
    else
        return [appDelegate.secondArray count];

因此,您的两个部分将始终存在,但如果它们没有数据,则将有零行。

【讨论】:

以上是关于两个动态部分的单元格文本的主要内容,如果未能解决你的问题,请参考以下文章

具有动态单元格高度的 UITableView

根据标签文本动态改变单元格高度

根据内容动态调整tableview单元格的高度 - iOS Swift

如何向 UICollectionView 动态添加新单元格?

iOS - 表格视图 - 静态单元格(分组) - 更改部分标题文本颜色

根据单元格OBjective-C中的标签文本(动态)增加单元格高度