目标c表格单元格中的不同uilabel

时间:2016-11-11 09:48:05

标签: ios objective-c uitableview uilabel

我正在尝试创建一个表,在每行中,它包含一些uilabels。 uilabel的数量基于我的数组,如果我的数组有一个字符串,那么它只会是一个标签,如果我的数组有2个字符串,那么该行将有两个标签。

第一行:

enter image description here

第二行:

enter image description here

这是我的代码,将字符串放入已经存在的uilabels中。如果我有更多字符串,如何让单元格自动生成更多的uilabels?

- (void)updateCell:(NSString *)text1 label2:(NSString *)text2 label3:(NSString *)text3{
   self.testLabel1.text = text1;
   self.testLabel2.text = text2;
   self.testLabel3.text = text3;
}

- (void)createLabel{
   //create uilabels based on the size of array?
}

如果这不可行,可能有哪些替代方法?任何建议都非常感谢。

3 个答案:

答案 0 :(得分:1)

这应该都是在cellForRowAtIndexPath中完成的,你应该基本上使用你的数组作为那个行索引,然后以编程方式创建uilabels,这里有一些代码,它不会工作,但逻辑应该没问题

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

NSArray *stringLabels = [self.labels objectAtIndex:indexPath.row]; // im not sure how you are getting the array

    for (NSString *str in stringLabels) {
        UILabel *newLabel = [[UILabel alloc]init];
        newlabel.SetFrame = CGrectMake(Set to your desired layout);
        newlabel.text = str;
        // uilabel formatting

        [cell addSubview:newLabel]
    }

}

这种方法非常灵活,因为它允许您在每个单元格中包含任意数量的标签。

答案 1 :(得分:0)

试试这个

您需要根据您的条件创建不同的单元格,并配置CellForAtIndexPath,如下所示:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSString *strFirstIndentifier = @"FirstIndentifier"; // set this idenfier to UITableViewCell in StroryBoard for all
    NSString *strSecondIndentifier = @"SecondIndentifier";
    NSString *strThirdIndentifier = @"ThirdIndentifier";
    UITableViewCell *adjustcell ;
    if (arrUnits.count == 1) {
        adjustcell = [tableView dequeueReusableCellWithIdentifier:strFirstIndentifier];
        //configure your lables here
    }
    else if (arrUnits.count == 2) {
        adjustcell = [tableView dequeueReusableCellWithIdentifier:strSecondIndentifier];
        //configure your lables here
    }
    else if (arrUnits.count == 3) {
        adjustcell = [tableView dequeueReusableCellWithIdentifier:strThirdIndentifier];
        //configure your lables here
    }

    return adjustcell;
}

答案 2 :(得分:0)

我建议使用UICollectionViewUICollectionView的数据源是一个数组,它将保存该特定行中的字符串数。 UICollectionView的每个单元格都会包含一个标签。我个人觉得这种方式更容易管理。