PrepareForSegue Tableview问题

时间:2013-04-18 16:28:00

标签: objective-c xcode uistoryboardsegue

我在点击单元格并尝试将我的日期转移到DetailViewController

时遇到了问题

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

这是我的方法:

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

   }

}

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

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



    }

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

如果我像这样实现它:

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

   }

}

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

我知道它接收了所有值,我已经通过NSLOG检查了它,而不仅仅是标题。

根据您的信息,我总是从网站上解析最新的20条新闻 这是有效的,我的细胞充满了新闻标题。

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

谢谢

2 个答案:

答案 0 :(得分:8)

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

NSIndexPath *indexPath = [[self tableView] indexPathForCell:sender];
lastNews *item = [news objectAtIndex:indexPath.row];
[segue.destinationViewController setDetail:item];

答案 1 :(得分:2)

好的,我想我解决了我的上一期。我忘记了将我的IBOUTLET Tableview连接到我的viewcontroller。就是这样