从iOS中的json动态创建UITableView中的UILabels?
Posted
技术标签:
【中文标题】从iOS中的json动态创建UITableView中的UILabels?【英文标题】:Dynamically create UILabels in UITableView from a json in iOS? 【发布时间】:2016-06-15 05:49:22 【问题描述】:我正在尝试创建此设计
来自以下 json
details = (
(
subtitle = "One";
title = 1;
,
subtitle = "two";
title = "2";
,
subtitle = "three";
title = "3";
),
(
subtitle = "one_two";
title = "1_2";
,
subtitle = "two_two";
title = "2_2";
)
);
我尝试了以下代码,但没有显示任何 UILables
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (!cell)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"] ;
NSUInteger row = [indexPath row];
int i = 0;
NSUInteger nLabels = [[mainArray objectAtIndex:indexPath.row ] count];
UILabel *label;
float x =self.tableView.frame.size.width/nLabels;
for (i = 0; i < nLabels; i++)
label = [[UILabel alloc] initWithFrame:CGRectMake(10 + (i * x), cell.frame.origin.y, 40, cell.frame.size.height)] ; //replace 40 with desired label width
label.textColor = [UIColor grayColor];
label.backgroundColor = [UIColor clearColor];
// set the label text here
label.text=@"treWT";
[label setNumberOfLines:0];
[label setAdjustsFontSizeToFitWidth:YES];
[cell.contentView addSubview:label];
return cell;
现在我可以用这种方式看到模拟器了
仍然没有对齐 请帮助我
【问题讨论】:
nLabels
的值是多少?
temp i 这样的硬编码值 " label.text=@"treWT"; '
首先添加调试以查看您的单元格是否为零。如果它不为零,则永远不会调用配置单元代码请将配置单元的代码粘贴到if (!cell)
子句之外。它不会运行里面的代码,因为单元格不是 nil 。
为什么人们会忽略弃用警告?有一个出列方法可以保证返回一个单元格。使用它!
【参考方案1】:
试试下面的标签对齐代码:
NSUInteger row = [indexPath row];
int i = 0;
NSUInteger nLabels = [[mainArray objectAtIndex:indexPath.row ] count];
UILabel *label;
float w =self.tableView.frame.size.width/nLabels;
float x = 0;
for (i = 0; i < nLabels; i++)
label = [[UILabel alloc] initWithFrame:CGRectMake(x, cell.frame.origin.y, w, cell.frame.size.height)] ; //replace 40 with desired label width
label.textColor = [UIColor grayColor];
label.backgroundColor = [UIColor clearColor];
// set the label text here
label.text=@"treWT";
[label setNumberOfLines:0];
[label setAdjustsFontSizeToFitWidth:YES];
label.textAlignment = NSTextAlignmentCenter;
[cell.contentView addSubview:label];
x += w;
【讨论】:
@Bangalore 继续加油兄弟:P【参考方案2】:删除if(!cell)
,因为单元格不是nil
。它不会执行条件。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"] ;
int row = [indexPath row];
int i = 0;
int nLabels = [[rowData objectAtIndex:row] count];
UILabel *label;
for (i = 0; i < nLabels; i++)
label = [[UILabel alloc] initWithFrame:CGRectMake(cell.frame.origin.x + (i * 40), cell.frame.origin.y, 40, cell.frame.size.height)] ; //replace 40 with desired label width
label.textColor = [UIColor grayColor];
label.backgroundColor = [UIColor clearColor];
// set the label text here
label.text=@"treWT"; //temp text
[cell.contentView addSubview:label];
return cell;
【讨论】:
但是如何对齐它们? 标签没有显示,因为我在 ui 中添加了自定义标签 但是在您的代码中添加了 UILabel,自定义标签在哪里? 在情节提要中错误地添加了另一个单元格以上是关于从iOS中的json动态创建UITableView中的UILabels?的主要内容,如果未能解决你的问题,请参考以下文章
iOS JSON 从 web 解析到 UITableView
尝试在用户向 iOS 中的 UITableView 添加行时动态增加 UITableView 的高度
iOS:从 UITableView 动态添加数据到 NSArray
从 Json Array 在 UITableView 上显示图像