-1

選択した objectAtIndexPath を詳細ビュー コントローラーに渡す方法がわかりません。ルート ビュー コントローラーは、アスリートのテーブル ビューです。選択されたときに、詳細ビュー コントローラー (ナビゲーション スタックにプッシュされるコントローラー) が、選択されたもの (すべての属性、名前、電話など) をすべて認識できるようにする必要があります。何を渡せばよいか混乱しています。 . これが私が持っているものです。

tableview.h

//how I populate the table
    -(void)viewWillAppear:(BOOL)animated{
        AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
        _managedObjectContext = [appDelegate managedObjectContext];

        NSFetchRequest *request = [[NSFetchRequest alloc] init];
        NSEntityDescription *athlete = [NSEntityDescription entityForName:@"Athlete" inManagedObjectContext:_managedObjectContext];
        [request setEntity:athlete];
        NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"last" ascending:YES];
        NSArray *sortDescriptors = [[NSArray alloc]initWithObjects:sortDescriptor, nil];
        [request setSortDescriptors:sortDescriptors];

        NSError *error = nil;
        NSMutableArray *mutableFetchResults = [[_managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
        if (mutableFetchResults == nil){
            //handle error
        }
        [self setAthleteArray:mutableFetchResults];
        [self.tableView reloadData];
    }


//how I try to send, and fail
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    NSString *segueIdentifier = [segue identifier];
    if ([segueIdentifier isEqualToString:@"setAthlete"])
    {
        UITableViewCell *cell = (UITableViewCell*) sender;
        NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
        /*
        Athlete *athlete = [self.athleteArray objectAtIndexPath:indexPath];
        I cant send the array, what do I do?
    }
}

ところで、フェッチされた結果ビューコントローラーはありません。ありがとう。

4

1 に答える 1

0

Athlete.h

@interface Athlete : UIViewController
{
    NSArray *arrayList;
}

@property(nonatomic, retain)NSArray *arrayList;

@end

.m で配列リストを合成する

@synthesize arrayList;

tableview.h

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    NSString *segueIdentifier = [segue identifier];
    if ([segueIdentifier isEqualToString:@"setAthlete"])
    {
        UITableViewCell *cell = (UITableViewCell*) sender;
        NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

        Athlete *athlete = [[Athlete alloc] initWithNibName:@"Athlete" bundle:nil];
        athlete.arrayList= [self.athleteArray objectAtIndexPath:indexPath];


    }
}

詳細については、これを試してください。このView Controller 間でのデータの受け渡しを確認してください。

于 2013-08-05T05:55:25.447 に答える