我想在表格行中设置UILabel,但问题是,当应用重新启动时,每次标签数量不同。 清除我想要创建具有动态行和列的表的更多细节。行是自己设置的,但是在列中我设置了标签也是动态的,那么每次新的Web服务调用时如何设置该标签?
实施例
行/列
A1 b11 b12 ....... b1n
A2 b21 b22 ....... b2n
A3 b31 b32 ....... b3n 。
Am bm1 bm2 ....... bmn
其中A是行或 b是列
答案 0 :(得分:1)
例如,你可以有一个名为rowData的可变数组。在init / initWithCoder / etc方法中,您可以创建另一个名为columnData的可变数组,例如可以包含每个标签的数据。将每行的columnData对象添加到rowData。
对于你的cellForRowAtIndexPath方法,你可以这样做:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (!cell) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"] autorelease];
int row = [indexPath row];
int i = 0;
int nLabels = [[rowData objectAtIndex:row] count];
UILabel *label;
NSLog([NSString stringWithFormat:@"%d labels", nLabels]);
for (i = 0; i < nLabels; i++) {
NSLog([NSString stringWithFormat:@"%d", i]);
label = [[[UILabel alloc] initWithFrame:CGRectMake(cell.frame.origin.x + (i * 40), cell.frame.origin.y, 40, cell.frame.size.height)] autorelease]; //replace 40 with desired label width
label.textColor = [UIColor grayColor];
label.backgroundColor = [UIColor clearColor];
// set the label text here
[cell.contentView addSubview:label];
NSLog([NSString stringWithFormat:@"%d subviews", [[cell.contentView subviews] count]]);
}
}
return cell;
}
答案 1 :(得分:1)
更好的选择只是在UITableViewCell中创建一个UITableView,你的每个标签都是单元格,你可以禁用内部tableview滚动。但是你需要确保你已经正确计算了内部桌面高度。
添加n个UIlabel等其他解决方案不会让您顺利滚动。
答案 2 :(得分:0)
创建具有您可能需要的最大标签数的单元格。使他们的标签为1,2,3,4 ...... - 增加数字。每次要求您按表格提供单元格时,您可以选择旧单元格或新单元格,确定需要多少标签,使标签范围可见(即label.hidden = NO;),然后隐藏另一个标签。您需要明显更改可见标签的文本。
答案 3 :(得分:0)
您使用tag方法和indexpath.row。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
for (i = 0; i < n; i++) {
label = [[UILabel alloc] initWithFrame:CGRectMake (i * yourWidth, 0, yourWidth + 5, yourHight)];
label.textColor = [UIColor blueColor];
label.tag = (indexPath.row)*100 + i //you can create n labels in a row.
label.text = [NSString stringWithString:@"%d",label.tag];
[cell.contentView addSubview:label];
}
}
return cell;
}
我认为这会对你有所帮助。
答案 4 :(得分:0)
您应该考虑使用其他视图,例如DTGridView