【问题标题】:PrepareForSegue Tableview issuePrepareForSegue Tableview 问题
【发布时间】:2013-04-18 16:27:59
【问题描述】:

单击单元格并尝试将我的日期转移到 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);

   }

}

如果我只删除 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);



    }

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

如果我像这样实现它:

- (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 条新闻 这很有效,我的单元格被新闻标题填满了。

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

谢谢

【问题讨论】:

    标签: objective-c xcode uistoryboardsegue


    【解决方案1】:

    如果“发件人”是调用它的单元格,您可以这样做:

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

    【讨论】:

    • 不幸的是,我已经尝试过这个并且得到了相同的结果。只有第一个消息发送的标题,但根据我的 NSLOG,我没有得到任何详细视图控制器。我的 slog 说全部为空:2013-04-18 20:50:12.972 IsraelNews[42293:c07] (null) 2013-04-18 20:50:12.984 IsraelNews[42293:c07] (null) 2013-04-18 20:50:12.985 IsraelNews[42293:c07] (null) 2013-04-18 20:50:12.985 IsraelNews[42293:c07] (null) 2013-04-18 20:50:12.985 IsraelNews[42293:c07] (null) 2013-04-18 20:50:12.986 IsraelNews[42293:c07] (null)
    • 我认为现在它正在起作用,但只是部分起作用。我只是将它发送到我的方法 setDetail,但在那里做了任何事情。现在它正在获取数据,但仍然只是我 20 岁的第一条消息。我点击任何单元格,它只会返回给我第一条消息。
    • 好的,我想我解决了我的上一个问题。我忘记将我的 IBOUTLET Tableview 连接到我的视图控制器。就是这样——安东刚刚编辑
    【解决方案2】:

    好的,我想我解决了上一个问题。我忘记将我的 IBOUTLET Tableview 连接到我的视图控制器。就是这样

    【讨论】:

      猜你喜欢
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多