【问题标题】:Custom Navigation with Xamarin.Forms使用 Xamarin.Forms 自定义导航
【发布时间】:2014-10-12 19:40:05
【问题描述】:

我正在开发一个适用于 Android 和 iOS 的应用程序,它需要一个或两个视图具有一定的灵活性。这就是为什么我们创建并实现了一项服务,该服务将基本的对象列表转换为 iOS 和 Android 的用户界面。但现在 Xamarin.Forms 已发布,我们决定将我们的服务替换为 Xamarin 提供的服务。我确实成功地使用 Xamarin.Forms 创建了视图,从而使页面看起来更美观、运行更流畅。但我的问题在于它的导航。这是我想要实现的一点点:

我希望我的应用启动一个以自定义片段开头的活动。 单击此片段上的按钮后,我希望将使用 Xamarin.Forms api 创建的页面添加到我当前的导航堆栈中!一旦用户完成了 Xamarin.Forms 页面,它导航到第二个自定义片段,所有这些都不会破坏导航周期。有人知道我如何实现这一目标吗?

对于 iOS 开发者:用 NavigationController 替换 Activity,用 ViewController 替换 Fragment

【问题讨论】:

    标签: xamarin xamarin.forms


    【解决方案1】:

    查看CarouselPage 了解 Xamarin.Forms 自己的方法。它看起来不是你需要的,但你也可以查看它的源代码,也许自己制作一个自定义渲染器。

    您可能还想看看MVVM

    至于您希望在每个页面上制作一个按钮的更简单/更黑客的方式,当点击按钮时执行Navigation.PushModalAsync(nextPage) - 将不再有“

    【讨论】:

    • 感谢您花时间回答。我实际上有 iOS 的解决方案,因为在 iOS 中初始化页面的方式,它返回一个 UIViewModel,我可以将它添加到我的导航控制器中。 ( App.GetMainPage().CreateViewController(); ) 我想知道在 android 中是否有类似的东西,它返回一个我可以开始使用的片段/活动。
    • @Chris 在有跨平台解决方案时制作特定于平台的解决方案?我看不懂逻辑
    • 因为使用 MvvMCross 仍然强制您设计用户界面,并手动连接绑定。 Xamarin.Form 没有。我们仍然希望能够为每个平台单独设计复杂的用户界面,但是一个或两个视图需要一定的灵活性,这应该由两个平台共享(所以如果页面发生变化,我可以这样做两者同时毫不费力)。我们的大部分数据都被很好地分离了,所以我看不到失去几周的好处,因为我必须在 mvvmcross 中重写它(这也没有很好的记录)。
    • @Chris,您可以使用 PushModalAsync 实现相同的效果 - 一种更简单且跨平台的方法......但是哦,好吧......
    【解决方案2】:

    如果按照您的意思,“当前导航堆栈”是为了使用每个平台的原生 导航,那么请记住,您不必使用 Xamarin.Forms'导航模型PushAsync等函数。

    如果您更喜欢使用特定于每个平台的代码进行导航,那么您可以像往常一样执行此操作。只需在每个平台特定项目中创建您的存根页面,然后为共享项目中的每个页面设置Xamarin.Forms内容 em>。

    从每个平台特定 存根页面(Activity / UIView / PhoneApplicationPage ) 然后,您可以在 shared Xamarin.Forms 页面上执行 Action 调用设置以帮助导航,或者挂钩到 custom-event 从 Xamarin.Forms** 页面返回到 平台特定 存根 页面以允许您从那里进行导航。

    就像 Sten 提到的那样,不会有任何“返回”按钮,所以您很可能必须自己做。

    【讨论】:

    • 谢谢你,我会试一试,让你知道结果如何:)
    猜你喜欢
    • 2015-04-26
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 2012-12-11
    相关资源
    最近更新 更多