基于Cell选择的Segues的任何“IF”语句?

时间:2013-06-27 03:50:29

标签: iphone ios uistoryboardsegue

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

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

非常感谢任何帮助。

由于

3 个答案:

答案 0 :(得分: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];
}

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

答案 1 :(得分:0)

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

  1. 当你创建一个segue时,你给它一个标识符。
  2. 执行segue时,会调用以下方法,因此将其覆盖
  3. 这样的事,

    - (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,该控制器具有要转到的控制器的表。不要从单元格到控制器创建segue。

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

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

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

    了解更多信息Refer this

答案 2 :(得分: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];
     }
  }