如何在滚动视图中显示从 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 中扩展+更新它?的主要内容,如果未能解决你的问题,请参考以下文章

在iOS中从左到右滚动时如何在Web视图中获取滚动方向?

如何在可缩放滚动视图中绘制可点击的网格对象,从远程 json 数据中获取数据?

从相机胶卷中获取所有图像并将其显示在滚动视图上?

空滚动视图和异步加载照片

Android sqlite数据库-如何在滚动结束时显示列表视图添加 "加载更多项目"。

在 UITableview 中平滑滚动以显示聊天记录