2013-08-04 142 views
-2

我有列出運動員的表格視圖。當選擇運動員時,我希望將詳細視圖控制器(推入堆棧的控制器)知道關於運動員的所有屬性。他/她的名字,生日,電話號碼等,但我不確定如何傳遞這些信息。如何在視圖控制器之間傳遞對象

allathletes.h

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


-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    NSString *segueIdentifier = [segue identifier]; 
    if ([segueIdentifier isEqualToString:@"setAthlete"]) 
    { 
     UINavigationController *navController = (UINavigationController *)[segue destinationViewController]; 
     AllAthletes *athleteList = (AllAthletes *)[[navController viewControllers] lastObject]; 
     //the line below gets an error :(
     AthleteDetail.managedObjectContext = self.managedObjectContext; 
    } 
} 
+0

可能重複[在視圖控制器之間傳遞數據](http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) –

回答

0

前推的詳細視圖控制器,設置屬性就可以用數據來顯示,比如:

myDetailViewController.myModel = selectedModel; 

在詳細視圖中,可以設置在viewWillAppear中使用這些數據創建視圖。

0

我想你會想要使用代表。這裏是一個很好的教程,如何做到這一點:Link

+2

否, 不是真的。將數據傳遞給詳細控制器時,通常不使用委託。如果要將數據傳回第一個控制器,則使用委託。 – rdelmar

相關問題