-2

我有一个用于 iPad 的拆分视图控制器,左侧有一个向下钻取表。我能够填充我的第一个表格视图,当我单击一个单元格时,这会将我带到我的第二个表格视图。我可以使用 NSLog 命令在命令寡妇的表视图输出中看到返回的记录计数和我希望看到的实际数据。我没有看到表格视图中的实际数据。相反,我看到 UITableViewCellAccessoryDisclosureIndicator 返回的每一行但没有实际数据。

我正在使用 xib 文件,并且我已经为要在钻取中显示的产品创建了此文件。在我的 Product.xib 文件中,我将 File's Owner Outlets 作为 productsTableView 链接到产品(我的 UITableView 控件)和链接到 View 的视图。视图的引用插座具有链接到产品的数据源,链接到产品的委托,最后链接到文件所有者的视图。

我在这里错过了什么吗?就像我说的,我把所有的数据都拿回来了,只是没有绑定到网格上。

@interface ProductViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> {

NSMutableArray *listOfItems;
NSMutableArray *dataArray;
IBOutlet UITableView *productsTableView;
}

@property(nonatomic, strong) IBOutlet UITableView *productsTableView;

@end


- (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];
}

// Set up the cell...
NSString *cellValue = [listOfItems objectAtIndex:indexPath.row];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.textLabel.text = cellValue;

return cell;
}

为了全面起见,我还将发布此内容,以显示我在哪里获取数据以及我是如何做到这一点的......

-(void) connectionDidFinishLoading:(NSURLConnection *)connection {

NSError *error = nil;
// Get the JSON data from the website
id result = [NSJSONSerialization JSONObjectWithData:receivedData options:kNilOptions error:&error];

if ([result isKindOfClass:[NSArray class]]) {

    for (NSArray *item in result) {
        NSArray *products = [item valueForKey:@"ProductDescription"];
        [dataArray addObject:products];
        [listOfItems addObject:products];
    }
}
else {
    NSDictionary *jsonDictionary = (NSDictionary *)result;

    for(NSDictionary *item in jsonDictionary)
        NSLog(@"Item: %@", item);
}

[self performSelector:(@selector(refreshDisplay:)) withObject:(self.productsTableView) afterDelay:1.0];
NSLog(@"Finished");
}

我的 NSLog 在这里:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"Dictionary: %@", dataArray);
return [dataArray count];
}
4

2 回答 2

0

简单的混...

  NSString *cellValue = [dataArray objectAtIndex:indexPath.row];

代替

  NSString *cellValue = [listOfItems objectAtIndex:indexPath.row];
于 2012-08-14T16:46:48.380 回答
0

您正在将products(这是一个NSArray)添加到listOfItems. 稍后cellForRowAtIndexPath,您会说cellValue( NSString) = [listOfItems objectAtIndex:indexPath.row](这可能是一个 `NSArray')。那将如何运作?

于 2012-08-14T16:50:38.837 回答