如何为多个 Tableview 控制器使用 prepareForSegue

How to use prepareForSegue for multiple Tableview Controllers

我有三个 table 视图 A、B、C。观看流程是这样的:

table A,点击一行--->table B,点击一行----Table C

我正在使用以下方法将数据从主视图 A 发送到详细视图 B。

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

    NSIndexPath *indexPath = [self->ListView_A indexPathForSelectedRow];
    DetailView_B *destViewController = segue.destinationViewController;

    destViewController.detailStatements = [dataArray objectAtIndex:indexPath.row];

}
}

我再次使用相同的方法将数据从 detailView_B 发送到 moreDetailView_C

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

    NSIndexPath *indexPath = [self->DetailView_B indexPathForSelectedRow];
    More_DetailView_C *destViewController = segue.destinationViewController;

    destViewController.detailStatements = [dataArray objectAtIndex:indexPath.row];

}
}

我正在使用模态转场而不是推送。问题是,当我从 table A 转到 table B 时,我在 table B 中看到数据。

但是当我从table C 回到table B 时,我在table B 中没有看到任何数据。

tableB 中的视图加载方法是:

- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"the name is %@",detailStatements.name);
// here when I come from table A, name is not null

//but when I come from table C,name is null.

}

是否可以对所有 3 个 table 视图使用通用的 segue 标识符?

请告诉我可能的处理方法?

根据您的评论,您需要一个放松转场,而不是您用于倒退的正常转场。

这可能会有所帮助 Storyboard: Control-drag from a bar button to the Exit item

或者向按钮添加一个操作以简单地关闭视图控制器。