prepareForSegue:sender:错误的发件人

时间:2013-12-31 17:20:40

标签: ios objective-c uitableview

我有一个UITableView,它从表示标题,摘要和目标URL的字符串数组中获取数据。当用户选择一个单元格时,该应用程序会切换到包含Web视图的视图控制器。

问题在于,无论选择哪个单元格,传递的数据始终是第一个单元格......

self.mockData是我正在使用的虚拟硬连线阵列,直到我开始使用该模型)

以下代码,非常感谢任何帮助。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self performSegueWithIdentifier:@"destinationWebView" sender:[self tableView:self.tableView cellForRowAtIndexPath:indexPath]];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"destinationWebView"]) {
        MyCustomWebPageViewController *destinationViewController = [segue destinationViewController];
        if ([destinationViewController canPerformAction:@selector(setArticleUrl:) withSender:self]) {
            if (self.urlOut) {
                self.urlOut = nil;
            }
            NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
            NSString *urlString = [[self.mockData objectAtIndex:indexPath.row] objectAtIndex:2];
            self.urlOut = [NSURL URLWithString:urlString];
            [destinationViewController setArticleUrl:self.urlOut];
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我认为用以下内容替换您的performSegueWithIdentifier行会有效:

[self performSegueWithIdentifier:@"destinationWebView" sender:[self.tableView cellForRowAtIndexPath:indexPath]];

这就像你现在向UITableView询问单元格一样,而不是UITableViewDataSource委托方法(正如原始问题评论中所指出的那样)。