-2

左側にドリルダウン テーブルがある iPad 用の分割ビュー コントローラーがあります。最初のテーブル ビューにデータを入力できます。セルをクリックすると、2 番目のテーブル ビューに移動します。返されたレコードの数と、NSLog コマンドを使用したコマンド ウィンドウのテーブル ビュー出力に表示されると予想される実際のデータを確認できます。表示されないのは、テーブル ビューの実際のデータです。代わりに、返される各行の UITableViewCellAccessoryDisclosureIndicator が表示されますが、実際のデータは表示されません。

私は xib ファイルを使用しており、ドリルダウンで表示したい製品用にこのファイルを作成しました。私のProduct.xibファイルには、製品にリンクされたproductsTableView(私のUITableViewコントロール)とビューにリンクされたビューとして、ファイルの所有者アウトレットがあります。ビューの参照アウトレットには、製品にリンクされたデータ ソース、製品にリンクされたデリゲート、最後にファイルの所有者にリンクされたビューがあります。

ここで何か不足していますか?私が言ったように、グリッドにバインドされていないだけで、すべてのデータが返されます。

@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ます。の後半で、 ( ) = (潜在的に「NSArray」)cellForRowAtIndexPathと言っています。それはどのように機能しますか?cellValueNSString[listOfItems objectAtIndex:indexPath.row]

于 2012-08-14T16:50:38.837 に答える