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

问题描述 投票:0回答:1

所以我有一个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,但不确定如何。

ios objective-c uiviewcontroller uinavigationcontroller instantiation
1个回答
0
投票

如果我理解正确,那是因为该特定情节提要的初始UIViewControllerUINavigationController

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

navController = [storyboard instantiateInitialViewController];

就像您已经完成的,然后:

navController.viewControllers[0]

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

© www.soinside.com 2019 - 2024. All rights reserved.