如何将TableViewController的Cell(Disclosure Detail)中的数据(选中/单击的单元格值)传递给下一个加载的ViewController?

时间:2012-05-04 19:01:50

标签: ios5 uitableview

我有一个带有多个单元格(详细信息披露)的TableViewController,每个单元格都与唯一数据相关联(例如标题/细节)。当我单击其中一个单元格时,另一个ViewController被加载(通过模态或推送segue)并应根据单击的单元格显示数据。

简单例如:

TableViewController的每个Cell都与单独的url相关联。当我单击其中一个单元格(详细信息公开)时,包含WebView的下一个ViewController应该打开与单击的单元格的URL对应的网页。

我们如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

首先,您需要设置每个segue的标识符(在故事板中,只需单击segue并在Attributes Inspector中设置它)。

然后,在您的UITableViewController子类中,您需要覆盖prepareForSegue:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"yourSegueIdentifier"] ) {
        UIViewController *viewController = segue.destinationViewController;
        viewController.yourVariable = yourData;
    }
}

答案 1 :(得分:1)

访问数据的一种方法是在prepareForSegue方法中使用以下内容:

NSIndexPath *indexPath = tableView.indexPathForSelectedRow;

这将使您可以访问表格的选定行(单元格),以便了解用户选择的项目。

然后使用prepareForSegue方法提取您需要的任何数据并将其传递到目标视图控制器,如另一个答案所示。