如何在将数据传递给 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
,但不确定如何。
那是因为该特定故事板的初始 UIViewController
是 UINavigationController
。
获得所需 VC 的一种简单方法是通过调用获得这样的 UINavigationController
:
navController = [storyboard instantiateInitialViewController];
就像你做的那样,然后:
navController.childViewControllers[0]
这将 return 该特定导航控制器的第一个 VC(当然,假设它仅包含它嵌入的 VC),这可能是您的ExperiencesListViewController
所以我有一个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
,但不确定如何。
那是因为该特定故事板的初始 UIViewController
是 UINavigationController
。
获得所需 VC 的一种简单方法是通过调用获得这样的 UINavigationController
:
navController = [storyboard instantiateInitialViewController];
就像你做的那样,然后:
navController.childViewControllers[0]
这将 return 该特定导航控制器的第一个 VC(当然,假设它仅包含它嵌入的 VC),这可能是您的ExperiencesListViewController