2012-04-08 3 views
1

Ich möchte Daten aus einer TableViewController-Zelle an einen DetailViewContoller (UITableViewController) übergeben, wobei ein Segment (ShowADVDetail) im Storyboard verwendet wird.Problem mit der Weitergabe von Daten mit einem anderen Abschnitt DetailTableViewController

Ich habe eine NSMutableArray 'Geschichten' mit einem geparsten RSS-Feed.

ich folgende prepareForSegue verwenden, die den ‚Titel‘ Wert einer Zelle passiert:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
     { 
      if ([segue.identifier isEqualToString:@"ShowADVDetail"]) { 

       NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
       int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1]; 
       NSString *theTitle = [[stories objectAtIndex: storyIndex] objectForKey: @"title"]; 
       [[segue destinationViewController] setDetailItem:theTitle]; 


      } 
    } 

Mit der folgenden Zeile kann ich den ‚Titel‘ Wert der bestimmten Zelle passieren.

NSString *theTitle = [[stories objectAtIndex: storyIndex] objectForKey: @"title"]; 

Ich kann auch die 'Beschreibung' Wert zugreifen und 'link' Wert wie so:

NSString *theDescription = [[stories objectAtIndex: storyIndex] objectForKey: @"description"]; 
NSString *theLink = [[stories objectAtIndex: storyIndex] objectForKey: @"link"]; 

Aber wie kann ich alle drei Werte in meinem segue passieren?

Mein DidSelectRowAtIndexPath so sieht weit wie folgt aus:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView deselectRowAtIndexPath:indexPath animated:NO] 



     [self performSegueWithIdentifier:@"ShowADVDetail" sender:self]; 

} 

Hope this Sinn machen ..

Dank

Antwort

5

Ich glaube, ich bin das Verständnis Ihrer Frage richtig. Sie können dies erreichen, indem Sie Eigenschaften in Ihrer Header-Datei (des detailviewcontrollers) für die Eigenschaften erstellen, die Sie übergeben möchten.

Also Ihr detailViewController Header würde wie folgt aussehen:

@interface DetailListViewController : UIViewController 
    @property (strong, nonatomic) NSString *storyName; 
    @property (strong, nonatomic) NSString *storyDescription; 
    ... 
@end 

Dann in Ihrem Storyboard können Sie den Übergang von Ihrem Tableview zu einem detailViewController steuern ziehen.

In Ihrem Tableviewcontroller Ihre detailViewController.h-Datei importieren und fügen Sie Code wie:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    NSIndexPath *indexPath = self.tableView.indexPathForSelectedRow; 
    [segue.destinationViewController setStoryName:###however you get name###; 
    [segue.destinationViewController setStoryDescription:###however you get desc###; 
} 

In diesem Code können Sie die Kontrolle von "Wenn segue.identifier ..." add

+0

Großen. Das hat geholfen. – user1297842

Verwandte Themen