如何在滚动视图中显示从 Web 获取的 NSArray 数据并在 Objective C 中扩展+更新它?
Posted
技术标签:
【中文标题】如何在滚动视图中显示从 Web 获取的 NSArray 数据并在 Objective C 中扩展+更新它?【英文标题】:How to display NSArray data fetched from web in scrollview and expand+update it in Objective C? 【发布时间】:2014-09-16 11:44:35 【问题描述】:我从网上获取了一些数据,字符串数据存储在 NSArray 中,如下所示:
"Player one:",
"\n Score:",
"5667",
"3445",
"0233",
"\n Game Name:",
"Super Mario Bros",
"Monster in my house",
"Jackle"
数据会像这样显示在屏幕上:
**Player One**
Score: Game Name:
5667 Super Mario Bros
3445 Monster in my house
0233 Jackle
我也尝试在 UIView 和 UIScrollView 上放置空白标签。因此,当“分数”更新时,它会覆盖 UILabel 值。但是如果用户在线,我想在屏幕上显示最多 10 个玩家(如上面的玩家)数据。这意味着屏幕上可能只有一个用户记分牌,或者可以显示 5 或 10 个用户记分牌。
所以,问题是如何根据我在屏幕上显示的数据量来扩大或缩小滚动视图。我应该把空白的 UILabels 放在哪里,这样 scollview 就不会显示空白的长白页?有什么办法吗?我试过放置 UILabel,但这不是完美的解决方案,因为我遇到了不必要的长白页的问题。
简而言之,有什么方法可以显示这些数据并自动扩展和缩小滚动视图?或者有没有更好的方法来解决这个问题?
【问题讨论】:
【参考方案1】:你可以在 UIScrollView 里面放一个 UITableView 并设置它的高度:
[[self yourTableView] setFrame:CGRectMake(yourTableView.frame.origin.x,0, yourTableView.frame.size.width, 50 *yourArray.count)]; //let's say your cell's height is 50
// yourArray.count 根据您的在线用户数反映您将拥有的行数
每个单元格(行)将包含一个在线播放器。您可以添加自定义单元格以获得更用户友好的设计:D
每次更新数据源(数组)时使用上述方法,并让 UIScrollView 也反映这些修改:
[yourScrollView setContentSize:CGSizeMake(yourScrollView.size.width, yourTableView.frame.origin.y + yourTableView.frame.size.height+35 )]; //let's say we add just 35 as white space...
【讨论】:
以上是关于如何在滚动视图中显示从 Web 获取的 NSArray 数据并在 Objective C 中扩展+更新它?的主要内容,如果未能解决你的问题,请参考以下文章
如何在可缩放滚动视图中绘制可点击的网格对象,从远程 json 数据中获取数据?