ios tableviews和json数组

时间:2012-03-20 20:31:44

标签: ios json uitableview nsarray


这让我感到困惑

我从json调用成功填充了一个数组,但是我想要poulate的表视图没有发生。

谁能明白为什么?

我已经尝试了很多东西但是传递给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

这是正确的吗?

1 个答案:

答案 0 :(得分:1)

两件事:

在设计师中,您是否通过IBOutlet连接了TableView?此引用是必需的,以便您的代码可以发送指令。

其次,我没有看到你在任何地方呼叫[tableview reloadData],在完成数据收集后你需要调用它。