0

我想知道是否有任何方法可以使用相同的 segue 强加 if 语句。基本上,我希望表格使用相同的视图,但根据所选单元格,我希望它携带与用户选择相关的不同数据。例如,如果用户在表格中选择达拉斯,则它不应该显示有关纽约的信息。

我是从一个视图到下一个视图创建 100 个 segue,还是有办法让它根据 if 语句携带相关数据?

任何帮助是极大的赞赏。

谢谢

4

3 回答 3

2
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Assume self.view is the table view
    NSIndexPath *path = [self.tableView indexPathForSelectedRow];
    DetailObject *detail = [self detailForIndexPath:path];
    [segue.destinationViewController setDetail:detail];
}

根据单元格的选择,只需传递要在视图控制器上显示的信息或对象。

于 2013-06-27T05:16:32.913 回答
0

这是你如何做到的......

  1. 当你创建一个 segue 时,你给它一个标识符。
  2. 当您执行 segue 时,会调用以下方法,因此请覆盖它

像这样的东西,

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"Identifier of your segue"]) {

    //Access the destination controller by, You can cast it to your custom controller class
    UIViewController *destination =  segue.destinationViewController;

    //Do what u want

    }
}

所以我相信,当表格中的一个单元格被选中时,你想去一个特定的视图,你需要创建从有表格的控制器到你想要去的控制器的 segue。不要创建从单元到控制器的转场。

tableView:didSelectRowAtIndexPath:你可以使用这个来执行segue...

[self performSegueWithIdentifier:@"Your segue Identifier" sender:self];

prepareForSegue:sender无论如何都会调用遗嘱,您可以为目标控制器设置数据。你现在只有一个segue。

有关更多信息,请参阅此

于 2013-06-27T04:09:36.523 回答
0

ctr+从您的 tablviewcontroller 拖动到 detailview 并为 segue 提供标识符并使​​用以下方法

  - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
     if ([segue.identifier isEqualToString:@"showRecipeDetail"]) {
         NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
         RecipeDetailViewController *destViewController = segue.destinationViewController;
         destViewController.recipeName = [recipes objectAtIndex:indexPath.row];
     }
  }
于 2013-06-27T05:21:33.290 回答