0

我是 iOS 开发和 Objective-C 编程的新手,所以请原谅我的“noobiness”。

事情是这样的,我有一个函数可以构建一个从 JSON 对象获取数据的数组。然后我有第二个函数,负责用数组中包含的数据填充 tableView。

问题是,这个数组的内容似乎无法从我的 tableView 函数中访问,即使该数组已添加到我的头文件并在主文件中实现。tableView 仍然是空的...

你知道这是为什么吗?

这是功能,非常感谢您的帮助!

1)数组构建功能:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[self.responseData appendData:data];

    //Get data
    NSError *myError = nil;
    NSDictionary *res = [NSJSONSerialization JSONObjectWithData:self.responseData options:NSJSONReadingMutableLeaves error:&myError];

    //Extract titles
    NSMutableArray *myResults = [[NSMutableArray alloc] init];
    NSArray *results = [res objectForKey:@"data"];

    for (NSDictionary *result in results) {
        NSString *title = [result objectForKey:@"colors"];
        NSLog(@"colors: %@", colors);
        [myResults addObject:colors];
    }

    self.colorNames = myResults;    
}

2)TableView填充功能:

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}

//Set cell text
NSString *colorString = [self.colorNames objectAtIndex: [indexPath row]];
NSLog(@"%@",colorString);
cell.textLabel.text = colorString;

    return cell;
}
4

3 回答 3

0

您确定在收到 json 数据后重新加载表视图数据吗?我会在你的方法[self.tableView reloadData];结束时建议一个。connection:didReceiveData:否则,该方法tableView:cellForRowAtIndexPath:只会在您加载视图后调用一次。

干杯,安卡

于 2012-08-07T20:41:41.310 回答
0

我猜你必须实现更多的 UITableViewDataSource 协议。在调用tableView:cellForRowAtIndexPath:以用您的数据填充表格之前,您必须至少提供一个方法tableView:numberOfRowsInSection:返回表格的实际行数。

最好的祝愿

布鲁诺

于 2012-08-07T20:56:04.630 回答
0

row 是 indexPath 的方法吗?我认为应该是 indexPath.row 而不是 [indexPath row]

于 2013-07-09T06:07:46.340 回答