所以我有一个tabBar
。单击某个选项卡会将用户带到嵌入在viewController
中的navigationController
。为了包含navigationController
,我使用
viewController
myViewController = [storyboard instantiateInitialViewController];
而不是
myViewController = [storyboard instantiateViewControllerWithIdentifier:@"myID"];
后面的代码会推送viewController
,但没有navigationController
这很好,直到我要将数据传递到实例myViewController
为止。问题是,我无法使用引用初始viewController
(即navigationController
)的实例传递数据,但是我可以使用直接引用myViewController
的实例来传递数据。换句话说:
这是为了获取数据(但没有navigationController
):
viewController = [storyboard instantiateViewControllerWithIdentifier:@"experienceID"];
((ExperiencesListViewController*)viewController).experiences = self.experiences;
并且如果我尝试添加数据,这会崩溃,但是如果我排除设置数据,则会给我一个navigationBar
:
viewController = [storyboard instantiateInitialViewController];
((ExperiencesListViewController*)viewController).experiences = self.experiences;
希望我对此解释得足够好。让我知道是否需要澄清。
EDIT我的第一个想法是使用prepareSegue
,但在tabs
之间移动时似乎并未触发。另一种想法是通过某种方式通过实例访问myViewController
,但不确定如何。
如果我理解正确,那是因为该特定情节提要的初始UIViewController
是UINavigationController
。
获得所需VC的一种简单方法是通过调用获得这种UINavigationController
:
navController = [storyboard instantiateInitialViewController];
就像您已经完成的,然后:
navController.viewControllers[0]
这将返回该特定导航控制器的第一个VC(当然,假设它仅包含其嵌入的VC),这可能是您的[[ExperiencesListViewController