-2

我正在生成一个 JSON 字符串,我需要将其解析并显示到页面上。我的 JSON 字符串输出有关 CD 内容的信息,如下所示:

[{"song_name":"Song 1","artist":"John","price":"$1"}, 
{"song_name":"Song 2","artist":"Anna","price":"$2"}, 
{"song_name":"Song 3","artist":"Ryan","price":"$3"}]

我想以列表格式显示我的 viewController 中的内容,显示歌曲名称、艺术家和价格。我不想使用 tableView 来显示此信息,而只想显示一个列表。我该怎么做呢?我假设我需要使用 NSJSONSerialization,但过去只将它用于 tableView。谢谢!

4

3 回答 3

1

除了其他答案,您可以只使用一个标签,只需在曲目信息之间使用@“\n”创建NSMutableString(用于动态添加曲目信息),将其传递给label.text并将UILabel的属性numberOfLines设置为0

于 2012-12-20T08:46:59.830 回答
1

按着这些次序:

  1. 解析 JSON 并将键值对(CD 的 NSDictionary)存储在 NSArray(比如 infoArray)中
  2. 在 viewController 的视图上添加 UIScrollview 作为子视图。
  3. 根据 infoArray 计数动态分配 UILabel。查看您的数据,我相信您可以使用静态帧初始化标签,即您的 y 可以保持静态。
  4. 在此标签上添加来自 infoArray 的文本。

不过,我建议只使用 UITableView。它更简单,更好的方法

于 2012-12-20T08:34:10.523 回答
0

您确实使用 NSJSONSerialization 创建了一个字典数组,然后逐个解析该数组并创建每个字典的视图。您可能最好使用以下方法:

-(UIView *) listView: (NSString *)songName andArtist:(NSString *)artist andPrice:(NSString *)price andIndex:(int)viewIndex {
    //create your view here and do anything you want

    UIView *subView = [[UIView alloc] init] autoRelease];
    subView.frame = CGRectMake(0, viewIndex * 70, self.view.frame.width, 70);

    //add labels and other stuff


   // return the view
   return subView;
}

您可以通过设置不同的 Y 值将其添加到当前视图中,以便它们使用前一种方法的 viewIndex 显示在彼此下方...因此,如果您有一个数组,它会像这样:

for (int i = 0; i < [array count]; i++) {

    NSDictionary *dict = [array objectAtIndex:i];
    NSString *songName = [dict valueForKey:@"song_name"];
    NSString *artist = [dict valueForKey:@"artist"];
    NSString *price = [dict valueForKey:@"price"];

    UIView *tempView = [self listView:songName andArtist:artist andPrice:price andIndex:i];

    [self.view addSubView:tempView];

}

您必须将其全部添加到滚动视图中,否则您将遇到页面上的行数过多的问题。如果您不知道如何使用 Google for UIScrollView。

但我建议不要使用这种方法。表格视图的存在是有原因的。它们是为这些东西而生的。因为还提供了滚动、绘图和刷新。如果可以,请使用它们!

于 2012-12-20T08:33:20.857 回答