【问题标题】:Xamarin.iOS / MonoTouch Storyboard Segue on UIViewController not found未找到 UIViewController 上的 Xamarin.iOS / MonoTouch Storyboard Segue
【发布时间】:2013-06-20 16:15:01
【问题描述】:

适用于 Xamarin.IOS/Monotouch 中的以下情况:

  • 我正在使用两个视图控制器,VCOne 和 VCTwo,并在 XCode 的 Storyboard 编辑器中为它们分配了两个自定义类(MYVCOneClass 和 MyVCTwoClass)。
  • 然后,我将一个 segue 从 VCOne(从左侧列表中的视图控制器)拖到编辑器部分的 VCTwo 视图控制器实例并选择“推送”。
  • 我将转场命名为“OneToTwoSegue”。

我的问题

当我从 VCOne 类中的按钮单击事件处理程序执行以下调用时:

this.performSegue("OneToTwoSegue", this);

我收到一个运行时错误,指出在 MyVCOneClass 对象上找不到 OneToTwoSegue。

有谁知道为什么我不能从这样的代码中调用这个 segue?我知道当我将 segues 链接到单元格、按钮等时,我已经看到它们在工作......

【问题讨论】:

    标签: ios mobile xamarin.ios storyboard segue


    【解决方案1】:

    如果您正在执行“推送”转场,您的第一个视图控制器需要是 UINavigationController 的根视图控制器。

    因此,在您的故事板中,拖放一个 UINavigationController,删除默认附加的 tableview 和 ViewController,然后将 VCOne 设置为根视图控制器(与制作 segue 的方式相同 - 按住控件并从 UINavigationController 拖动到 UIViewController 然后点击根视图控制器。

    您的 Segue 之后应该可以正常工作。只需确保将 UINavigationController 设置为第一个屏幕(指向左侧的小箭头应从 VCOne 移动到 UINavigationController)

    编辑: 我已经上传了我创建的示例故事板的屏幕截图,以向您展示这一点。 VCOne 是 Navigation Controller 的根视图控制器。并且有一个从 VCOne 到 VCTwo 的 segue,称为 OneToTwoSegue。有了这个,您的按钮点击代码将完美运行。

    【讨论】:

    • 因此,如果我想使用 push segues 一个接一个地链接 5 个屏幕(带有自定义视图控制器类),我需要将它们全部封装在 NavigationController 中,将 segue 链接到下一个导航控制器,然后会吗?
    • 您只需要一个导航控制器来链接所有这些。因此,在您的故事板编辑器中,流程将如下所示:UINavigationController --RootViewController--> VCOne --OneToTwoSegue--> VCTwo --TwoToThreeSegue--> VCThree 等等。只要导航流中的第一个视图控制器(在您的情况下为 VCOne)是 UINavigationController 的根视图控制器,之后与推送序列连接的所有其他 UIViewController 都将使用该 UINavigationController。
    • 我已经为你添加了截图并更新了原来的答案
    • 感谢您的详尽回答!当我把这个设置放在一起时,效果很好。
    猜你喜欢
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    相关资源
    最近更新 更多