按钮单击后尝试InstantiateViewController时出错

时间:2017-03-20 12:57:53

标签: ios xamarin xamarin.ios

我是使用Visual Studio 2015进行Xamarin iOS开发的初学者,我发现了我的第一个疑问/问题。

当我在点击按钮后尝试加载嵌入在NavigationController中的TabController时,我得到一个黑色屏幕,底部有白色标签栏(没有图像或任何配置显示)。

这是我的故事板(它有NavigationController - > TabBarController - > 4 ViewControllers(HomeController,SearchController,MoreController,SettingController)):

enter image description here

所有组件都有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)。你能给我一个解决方案以及如何理解这个吗?

提前致谢!

2 个答案:

答案 0 :(得分:0)

对我而言,正确的方法是

self.tabBarController?.selectedViewController?.navigationController?.pushViewController(yourController, animated: true)

您的selectedViewController实际上是UINavigationViewController

答案 1 :(得分:0)

关于第一个问题:请按照

进行操作
  1. 确保您拥有WorkspaceNavigationController班级文件。
  2. 选择NavigationController的故事板文件,并确保选择黄色(故事板文件的上三个图标左侧)
  3. 然后确保您已将适当的类文件引入NavigationController视图。
  4. 我已添加图片以便更好地理解。

    help image