1

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

我有一个 NSMutableArray 'stories' 包含一个解析的 RSS 提要。

我正在使用以下 prepareForSegue,它传递单元格的“标题”值:

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


            }
    }  

通过以下行,我可以传递特定单元格的“标题”值。

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

我还可以像这样访问“描述”值和“链接”值:

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

}

希望这有意义..

谢谢

4

1 回答 1

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

在此代码中,您可以添加检查“如果 segue.identifier...”

于 2012-04-09T17:11:13.927 回答