1

PFFile を新しいビューに渡すと、画像が表示されないか、間違った画像が表示されます。

これが prepareForSegue メソッドです

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([[segue identifier] isEqualToString:@"ShowWine"]) {

        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        PFObject *object = [self.objects objectAtIndex:indexPath.row];
        PFFile *file = [object objectForKey:@"image"];
        [[segue destinationViewController] setFile:file];

    }
}

関連する実装ファイルの残りの部分は、正しいセクションの正しい行に到達していないと思いますか?

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return self.sections.allKeys.count;
}


- (NSString *)wineTypeForSection:(NSInteger)section {
    return [self.sectionToWineTypeMap objectForKey:[NSNumber numberWithInt:section]];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    NSString *wineType = [self wineTypeForSection:section];
    NSArray *rowIndecesInSection = [self.sections objectForKey:wineType]; return  rowIndecesInSection.count;
}

- (void)objectsDidLoad:(NSError *)error {
    [super objectsDidLoad:error];

    [self.sections removeAllObjects];
    [self.sectionToWineTypeMap removeAllObjects];

    NSInteger section = 0;
    NSInteger rowIndex = 0;
    for (PFObject *object in self.objects) {
        NSString *wineType = [object objectForKey:@"wineType"];
        NSMutableArray *objectsInSection = [self.sections objectForKey:wineType];
        if (!objectsInSection) {
            objectsInSection = [NSMutableArray array];

            [self.sectionToWineTypeMap setObject:wineType forKey:[NSNumber numberWithInt:section++]];
        }

        [objectsInSection addObject:[NSNumber numberWithInt:rowIndex++]];
        [self.sections setObject:objectsInSection forKey:wineType];
    }
}

- (PFObject *)objectAtIndexPath:(NSIndexPath *)indexPath {
    NSString *wineType = [self wineTypeForSection:indexPath.section];

    NSArray *rowIndecesInSection = [self.sections objectForKey:wineType];

    NSNumber *rowIndex = [rowIndecesInSection objectAtIndex:indexPath.row];
    return [self.objects objectAtIndex:[rowIndex intValue]];
}
4

1 に答える 1

0

あなたがやってみるべきことは次のとおりです:

  1. インスタンス変数を作成します(PFFile * aFile)
  2. で、メソッドをdidSelectRowAtIndexPath:呼び出し、戻り値を設定しますobjectAtIndexPath:aFile
  3. まだで、あなたとをdidSelectRowAtIndexPath:呼び出し、宛先ファイルをあなたの変数に設定するだけです:。performSegueWithIdentifier:prepareForSegue:[[segue destinationViewController] setFile: aFile];

これを試して、うまくいくかどうかを確認してください。そうでない場合は、私に知らせてください!

于 2012-10-09T10:08:09.083 に答える