PrepareForSegue Tableview问题

Ant*_*ton 3 xcode objective-c uistoryboardsegue

单击单元格并尝试将我的日期转移到DetailViewController时,我遇到了segue的问题

我没有在这里找到我的问题的答案,所以我在这里问.

这是我的方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

//    NSLog(@"Source Controller = %@", [segue sourceViewController]);
//    NSLog(@"Destination Controller = %@", [segue destinationViewController]);
//    NSLog(@"Segue Identifier = %@", [segue identifier]);


        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
       if (indexPath){
        lastNews *item = [news objectAtIndex:indexPath.row];
        [segue.destinationViewController setDetail:item];
        NSLog(@"%@", item.title);

   }

}
Run Code Online (Sandbox Code Playgroud)

如果我只删除if条件并保留我的代码如下:

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    //    NSLog(@"Source Controller = %@", [segue sourceViewController]);
    //    NSLog(@"Destination Controller = %@", [segue destinationViewController]);
    //    NSLog(@"Segue Identifier = %@", [segue identifier]);


            NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
            lastNews *item = [news objectAtIndex:indexPath.row];
            [segue.destinationViewController setDetail:item];
            NSLog(@"%@", item.title);



    }
Run Code Online (Sandbox Code Playgroud)

我的数据可以传输,但只能传输第一个单元格.

如果我将像这样实现它:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {


    if ([[segue identifier] isEqualToString:@"detailNews"]) {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
       //if (indexPath){
        lastNews *item = [news objectAtIndex:indexPath.row];
        [segue.destinationViewController setDetail:item];
        NSLog(@"%@", item.category);

   }

}
Run Code Online (Sandbox Code Playgroud)

它会发送但始终是新闻的标题,并始终来自第一个新闻.(NSLOG仅用于检查)

我知道它收到了所有的价值,我已经通过NSLOG检查了它,而不仅仅是标题.

为了您的信息,我总是从网站解析最新的20条新闻.这是有效的,我的单元格由新闻标题填充.

你能告诉我我哪里错了吗?

谢谢

yuj*_*ean 8

如果"sender"是调用它的单元格,您可以执行以下操作:

NSIndexPath *indexPath = [[self tableView] indexPathForCell:sender];
lastNews *item = [news objectAtIndex:indexPath.row];
[segue.destinationViewController setDetail:item];
Run Code Online (Sandbox Code Playgroud)