ios tableviews 和 json 数组

Posted

技术标签:

【中文标题】ios tableviews 和 json 数组【英文标题】:ios tableviews and json arrays 【发布时间】:2012-03-20 20:31:43 【问题描述】:

这让我困惑了好久

我成功地从一个 json 调用填充了一个数组,但是我想要填充的表视图没有像 .

谁能明白为什么?

我已经尝试了一些很好的方法,但是传递给 tableView 的数组没有被成功检索 json 值填充

 - (void)connectionDidFinishLoading:(NSURLConnection *)connection 

    NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    self.responseData = nil;

    NSArray* categories = [(NSDictionary*)[responseString JSONValue] objectForKey:@"categories"];
    [responseString release];


    //fetch the data
    for (NSDictionary* item in categories)         
        NSString* c = [item objectForKey:@"CATEGORY_NAME"];
        [self.tableViewArray addObject:[NSString stringWithFormat:@"%@", c]];
    



    - (void)viewDidLoad

    [super viewDidLoad];
    [self loadData];


    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    return [tableViewArray count];


    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    

    // Configure the cell.
    NSInteger rowNumber = indexPath.row;
    NSString *stateName = [tableViewArray objectAtIndex:rowNumber];
    cell.textLabel.text = stateName;
    return cell;
 

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    NSString *message = [NSString stringWithFormat:@"You selected %@",[self.tableViewArray objectAtIndex:indexPath.row]];

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message: message delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil];

    [alert show];

    [alert release];



编辑

我的 .h 是

@interface Medical_MeetingsViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 
    NSMutableArray *tableViewArray; 
    NSMutableData *responseData; 
    IBOutlet UITableView *tableViewCat;


@property (nonatomic, retain) NSMutableArray *tableViewArray;
@property (retain, nonatomic) NSMutableData *responseData;

-(IBAction)loadData;

@end

这对吗?

【问题讨论】:

你在操作数组后[tableView reloadData]吗? 谢谢你,但我现在在下面的编辑中遇到了问题 【参考方案1】:

两件事:

在设计器中,您的 TableView 是否通过 IBOutlet 连接?此参考是必要的,以便您的代码可以向其发送说明。

其次,我没有看到你在任何地方打电话给[tableview reloadData],你需要在完成数据收集之后再打电话。

【讨论】:

感谢您,我已将 tableview 的插座连接到委托和数据源。我没有重新加载数据,但现在做。我现在得到 tableView 的本地声明隐藏实例变量,我有 IBOutlet UITableView *tableView;在我的 .h 只需给您的 IBOutlet 取另一个名字。 再次感谢 - 你可以告诉我这对我来说是新的,我在 .m 和 .h 中给了 IBOutlet 另一个名称,但它是一样的。也许您可以快速查看一下我刚刚发布的上面的 .h 并告诉我它看起来是否正常? 您是如何重命名 IBOutlet 的?简单地在编辑器中重命名是危险的,因为您可能会错过一些参考。右键单击并选择 Refactor -> Rename 是首选方式。我现在要做的是删除您的 IBOutlet(在代码和 IB 中),然后重新创建它。 顺便说一句,我猜出了问题是您只在 .m 和 .h 文件中重命名了 IBOutlet。您还必须更新 IB 中的连接,而您可能没有这样做。

以上是关于ios tableviews 和 json 数组的主要内容,如果未能解决你的问题,请参考以下文章

来自json的数组数据在tableview ios上重复

JSON Parse iOS Array of Dictionaries 解析成数组只显示 tableview 中的最后一个对象

Swift Json 转换为 tableview 的数组

如何在 iphone 中显示 json 的可变数组数据,如可扩展/可折叠 TableView?

如何在ios中设置tableView单元格标题?

非常基本的 JSON 到 tableView (iOS)