在UITableView中显示数据

时间:2012-08-14 16:09:12

标签: ios uitableview xib

我有一个适用于iPad的分割视图控制器,左侧有一个向下钻取的桌子。我能够填充我的第一个表格视图,当我点击一个单元格时,这会将我带到第二个表格视图。我可以通过NSLog命令查看返回的记录计数以及我希望在命令窗口的表视图输出中看到的实际数据。我看不到的是表格视图中的实际数据。相反,我看到返回的每一行都有UITableViewCellAccessoryDisclosureIndicator但没有实际数据。

我正在使用xib文件,我已经为我希望在深入分析中显示的产品创建了此文件。在我的Product.xib文件中,我将File的Owner Outlets作为productsTableView链接到产品(我的UITableView控件)和视图链接到View。引用视图的Outlets将dataSource链接到产品,委托链接到产品,最后查看链接到File的所有者。

我在这里遗漏了什么吗?就像我说我得到的所有数据一样,它只是没有绑定到网格。

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

2 个答案:

答案 0 :(得分:0)

简单的混合...

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

而不是

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

答案 1 :(得分:0)

您要将productsNSArray)添加到listOfItems。在cellForRowAtIndexPath中稍后,您说cellValueNSString)= [listOfItems objectAtIndex:indexPath.row](可能是“NSArray”)。这会怎么样?