我正在尝试使用从Web服务器返回的动态内容构建tableView
。 Web服务器发送的数据可以视为数组。它的每个成员都包含一些文本,可能包含或不包含一些图像。我想使用UITableViewCell
来表示数组中的一个成员,但无法弄清楚如何处理不确定数量的图像。我该如何处理这类问题?或者还有其他一些解决方案吗?
非常感谢。
似乎问题只包含文本很难得到正确答案。因此,Web服务器发送的数据如下所示:
{
"data": [
{
"author":"Bill" ,
"content":"apple is great" ,
"replyTime":"2014-04-23 22:22:00"
},
{
"author":"George" ,
"content":"banana is great too, have a look at the picture[imgstart]http://img.example.net/banana.jpg[imgend]",
"replyTime":"2014-04-23 22:25:00"
},
{
"author":"Thomas" ,
"content":"peach is better, see[imgstart]http://img.example.net/peach1.jpg;http://img.example.net/peach2.jpg[imgend]",
"replyTime":"2014-04-23 22:25:30"
}
]
}
注意第三个JSON数组成员,[imgstart]和[imgend]之间有两个以分号分隔的图像链接,这意味着一个回复中有两个图像。
我的问题是在设计UITableViewCell
的子类视图时,我该如何安排imageView
?
抱歉造成混淆
我朋友的建议是我应该使用webView在网页中显示数据。
答案 0 :(得分:1)
使用数组中的项目数来确定numberOfRowsInSection - 它将使用正确的单元格数填充UITableView。
答案 1 :(得分:0)
如果要显示的图片太多,宽度大于单元格的宽度,也许您可以UIScrollView
给UITableViewCell
{{1}}。然后图像可以从左向右滚动。
答案 2 :(得分:0)
配置单元格时,可以检查某个indexPath是否有图像,如果是,则分配新的UIImageView,设置图像属性并添加到单元格的内容视图中。否则只显示文字。
-(UITableViewCell)tableviewForIndexPath:(NSIndexPath)index
{
...
if([data[index.row] hasImage])
{
UIImageView *imageView = [UIImageView alloc] initWithFrame:CGRectMake(...)];
imageView.image = data[index.row].image;
[cell.contentView addSubview:imageView];
}
...
}
答案 3 :(得分:0)
首先,您需要在其中一个对象中实施UITableViewDataSource
协议(documentation)(例如,可以是托管UITableView
的View Controller);
其次,通过将UITableView
设置为实现dataSource
协议的对象来配置UITableViewDataSource
;
最后,每当您收到新数据时,都会在reloadData
上致电UITableView
。这会导致重新加载数据,并再次调用UITableViewDataSource
的方法。
答案 4 :(得分:0)
首先解析JSON并在模型类中轻松提供链接和内容。
对UITableViewCell进行子类化并使用例如
- (void) populateCellWithData: (YourModelClass *)data;
填充内容时,您可以添加图像。如果您需要针对不同情况使用不同的布局,则可以在
中进行布局- (void) layoutSubviews;
在显示单元格之前将调用它,您可以在那里设置各个子视图的大小和位置。
希望这有帮助。