将带有segue的数据传递给另一个细节uiTableViewController的问题

时间:2012-04-08 12:31:31

标签: objective-c ios segue drilldown

我想在Storyboard中使用segue(ShowADVDetail)将数据从TableViewController单元格传递给DetailViewContoller(UITableViewController)。

我有一个包含已解析RSS源的NSMutableArray'故事'。

我正在使用以下的prepareForSegue,它传递一个单元格的'title'值:

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


            }
    }  

使用以下行我可以传递特定单元格的'title'值。

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

我也可以像这样访问'Description'值和'link'值:

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

但是如何在我的segue中传递所有3个值?

到目前为止,我的didSelectRowAtIndexPath看起来像这样:

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



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

}

希望这有意义..

由于

1 个答案:

答案 0 :(得分:5)

我想我正确理解你的问题。您可以通过在头文件(detailviewcontroller)中为要传递的属性创建属性来实现此目的。

所以你的detailViewController标题看起来像是:

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

然后在故事板中,您可以控制 - 将segue从tableview拖动到detailViewController。

在tableviewcontroller中导入detailViewController.h文件并添加如下代码:

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

在此代码中,您可以添加“If segue.identifier ...”

的检查