我是使用Visual Studio 2015进行Xamarin iOS开发的初学者,我发现了我的第一个疑问/问题。
当我在点击按钮后尝试加载嵌入在NavigationController中的TabController时,我得到一个黑色屏幕,底部有白色标签栏(没有图像或任何配置显示)。
这是我的故事板(它有NavigationController - > TabBarController - > 4 ViewControllers(HomeController,SearchController,MoreController,SettingController)):
所有组件都有StoryBoard ID。
在Previous Controller中,我的PushViewController代码是这样的:
WorkspaceNavigationController controller = Storyboard.InstantiateViewController("WorkspaceNavigationController") as WorkspaceNavigationController;
if (controller != null)
{
controller.PushViewController(controller, true);
}
但我得到一个黑屏:S。在我的输出窗口中,我可以看到与viewcontrollers相关的“错误”:“界面生成器文件中的未知类HomeController”,与其他文件一样。
编辑:好的,黑屏正在显示,因为我的WorkspaceNavigationController继承自UIViewController。现在,继承自UINavigationController,我收到此错误:“不支持推送导航控制器”
我想我不能将PushViewController与NavigationController一起使用,但我尝试用TabBarController做同样的代码:
TabBarController controller = Storyboard.InstantiateViewController("TabBarController") as TabBarController;
if (controller != null)
{
controller.NavigationController.PushViewController(controller, true);
}
错误是另一个错误:“这个类不是关键的HomeController密码值编码。”
编辑:我用获得的控制器更改了NavigationController的调用,但似乎没有NavigationController,因为它具有空值真的,我不明白我怎么能表明这一点。而且我不理解它的行为(因为两者(Navigation和TabBar控制器)都继承了UIViewController)。你能给我一个解决方案以及如何理解这个吗?
提前致谢!
答案 0 :(得分:0)
对我而言,正确的方法是
self.tabBarController?.selectedViewController?.navigationController?.pushViewController(yourController, animated: true)
您的selectedViewController
实际上是UINavigationViewController
。
答案 1 :(得分:0)