将对象传递给“详细”视图控制器多个级别深

时间:2013-09-19 05:23:51

标签: ios storyboard

在iOS中,使用Storyboard,当我想将一个对象传递给我的详细视图控制器时,我通常会这样做:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    UIViewController *destination = [segue destinationViewController];

    if ([segue.identifier isEqualToString:@"ShowRouteViewController"]) {
        if ([destination respondsToSelector:@selector(setRoute:)]) {
            [destination setValue:self.route forKey:@"route"];
        }
    }
}

如果我的下一个视图控制器需要此对象,这对我来说很有意义。我想知道的是,将对象多个屏幕深度传递的最佳做法是什么。例如,如果我有4个视图控制器:

A-> B-> C-> d

A有路由属性,D需要路由属性,但B和C没有,D如何获取路由属性?我一直只是将属性添加到B和C,以便属性可以渗透到我需要的视图控制器,但我不确定是否有更简洁的方法来执行此操作。提前谢谢!

1 个答案:

答案 0 :(得分:1)

你可以使用appdelegate。在AppDelegate中声明您的变量(nsstring,nsinteger,nsarray等)。现在你可以像这样调用你的变量: self.appDelegate = [[UIapplication sharedapplication] delegate]; self.appDelegate.yourVariable