如何在将数据传递给 viewController 时实例化 navigationController?

How do I instantiate navigationController while passing data to viewController?

所以我有一个tabBar。单击某个选项卡会将用户带到嵌入在 navigationController 中的 viewController。为了包含 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;

希望我解释得足够好。如果有什么我需要澄清的,请告诉我。

编辑 我的第一个想法是使用 prepareSegue,但在 tabs 之间移动时似乎不会触发。另一个想法是以某种方式通过实例访问 myViewController,但不确定如何。

那是因为该特定故事板的初始 UIViewControllerUINavigationController

获得所需 VC 的一种简单方法是通过调用获得这样的 UINavigationController

navController = [storyboard instantiateInitialViewController];

就像你做的那样,然后:

navController.childViewControllers[0]

这将 return 该特定导航控制器的第一个 VC(当然,假设它仅包含它嵌入的 VC),这可能是您的ExperiencesListViewController