我想知道是否有任何方法可以使用相同的 segue 强加 if 语句。基本上,我希望表格使用相同的视图,但根据所选单元格,我希望它携带与用户选择相关的不同数据。例如,如果用户在表格中选择达拉斯,则它不应该显示有关纽约的信息。
我是从一个视图到下一个视图创建 100 个 segue,还是有办法让它根据 if 语句携带相关数据?
任何帮助是极大的赞赏。
谢谢
我想知道是否有任何方法可以使用相同的 segue 强加 if 语句。基本上,我希望表格使用相同的视图,但根据所选单元格,我希望它携带与用户选择相关的不同数据。例如,如果用户在表格中选择达拉斯,则它不应该显示有关纽约的信息。
我是从一个视图到下一个视图创建 100 个 segue,还是有办法让它根据 if 语句携带相关数据?
任何帮助是极大的赞赏。
谢谢
- (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]; }
根据单元格的选择,只需传递要在视图控制器上显示的信息或对象。
这是你如何做到的......
像这样的东西,
- (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。
有关更多信息,请参阅此
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];
}
}