0

我还没有掌握下面这个结构的转移。我已经阅读了很多帖子,并且看到了其他人的相同未答复的帖子,但没有解决方案。

我将尝试简化问题,以使所有人更容易。

项目结构为:UITabbar 带有tab1 和tab2

Tab1 有一个导航控制器-->ViewController1

Tab2 有一个导航控制器 -->ViewController2

在 viewcontroller1 (tab1) 我有对象 X。

在 ViewCONtroller2 (tab2) 我想显示对象 X。

不用担心显示,这是最容易的部分。

在此处输入图像描述

问题:如何将对象 X 从 tab1 传递到 tab2。(一般模式是什么)。

如果你想用 prepareForSegue 来做,这样可以吗,还是有更好的方法。

如果使用prepareForSegue,你将segue拖到哪里?

  1. 标签栏控制器

    在此处输入图像描述

OR***** 2. 到第二个 VC 在此处输入图像描述

希望这足够清楚。考虑到这一点,您将如何执行传输?

使用转场 1: 在此处输入图像描述

我试过这样做:

//(From View controller 1)

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

            ViewController2* vc2 = [[ViewController2 alloc] init];
            UITabBarController* tbc = [segue destinationViewController];
            vc2 = (ViewController2 *)[[tbc customizableViewControllers] objectAtIndex:1];
    //Crash here with with [MainNavigationControllerDesign setViewController1Delegate:]: unrecognized selector sent to instance 0x1064ef70'
            vc2.viewController1Delegate=self;
            vc2.objectXAtViewController2 = _objectXFromViewController1;
        }
    }

那么,这个 Object X 传输是如何完成的呢?先感谢您

4

1 回答 1

1

你不想以这种方式使用segues。Segue 总是在您访问新控制器时实例化它们,但是您已经将这些控制器嵌入到选项卡栏控制器中。如果您在代码中进行设置,我会说使用委托,但如果您在 IB 中进行设置,则很难做到这一点。在 VC2 中,您可以通过 self.tabBarController.viewControllers[0] 获得对 VC1 导航控制器的引用。VC1 将是导航控制器的 topViewController,因此,将它们放在一起并添加演员表,您可以像这样访问 VC1:

ViewController1 *vc1 = (ViewController1 *)[self.tabBarController.viewControllers[0] topViewController];

获得该引用后,您可以访问 vc1 的任何属性。不要忘记将 ViewController1.h 导入到 ViewController2 的 .m 文件中。

于 2013-01-17T16:39:59.720 回答