我想知道是否有办法使用相同的segue强加if语句。基本上我想要表格的相同视图去,但根据所选的单元格,我希望它携带与用户选择相关的不同数据。例如,如果用户在表中选择达拉斯,则不应在纽约显示信息。
我是否从一个视图到下一个视图创建了100个segue,或者它是否有办法根据if语句携带相关数据?
非常感谢任何帮助。
由于
答案 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)
这是你如何做到的....
这样的事,
- (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];
}
}