我正在尝试创建一个表,在每行中,它包含一些uilabels。 uilabel的数量基于我的数组,如果我的数组有一个字符串,那么它只会是一个标签,如果我的数组有2个字符串,那么该行将有两个标签。
第一行:
第二行:
这是我的代码,将字符串放入已经存在的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?
}
如果这不可行,可能有哪些替代方法?任何建议都非常感谢。
答案 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)
我建议使用UICollectionView
,UICollectionView
的数据源是一个数组,它将保存该特定行中的字符串数。 UICollectionView
的每个单元格都会包含一个标签。我个人觉得这种方式更容易管理。