0

我正在开发使用超音速的跨平台应用程序。但是,我相信我在理解超音速如何在内部管理视图方面存在问题。

首先,我不想使用本机导航栏,因为它不支持标题内的图像,例如公司徽标。这就是我不想将视图推入视图堆栈的方式(因为它会自动添加 < 返回按钮)。

我的问题是:如何在 appgyver 的超音速中切换视图而不将其推入视图堆栈?类似标签,但没有标签界面。是否可以?

也许我应该只使用不同的移动 Web 应用程序框架?

4

1 回答 1

1

您可以使用此方法删除本机导航栏:

supersonic.ui.navigationBar.hide(options).then( function() {
    supersonic.logger.debug("Navigation bar hidden without animation.");
});

还有另一个隐藏导航栏的建议,这样它就不会在此处找到的屏幕上闪烁:

导航栏不隐藏我注意到很多时候,导航栏不会隐藏,因为在视图加载完成之前进行了调用,导致错误,并且导航栏没有隐藏。

快速修复:您需要一种方法来告诉视图它已完成加载。我们如何做到这一点?窗口.post()

在原始视图中,在任何控制器中,添加以下代码

$scope.broadcastMessage = function(msg){

    var message = {
        recipient: "hideView",
        message: "Hi Hide view!"
    };

    window.postMessage(message);
});

在您的第二个视图中,执行相同操作,但使用以下代码

function messageReceived(event) {

    // check that the message is intended for us
    if (event.data.recipient === "showView") {
        steroids.view.navigationBar.hide(); 
    }
}
window.addEventListener("message", messageReceived);

这将确保在视图收到消息之前不会进行调用(直到它加载后才会调用)

这意味着将视图推送到堆栈不会提供本机导航栏,您可以添加自己的导航栏并根据需要设置样式。这是目前使用 Supersonic 的一种非常常见的方法。

如果您使用选项卡,它们每个都有自己的视图堆栈。

要回答您的问题,没有办法拥有不推送到堆栈的视图。解决这个问题非常简单。你也可以使用modals。同样,要根据需要设置导航栏的样式,您需要创建自己的导航栏并隐藏本机导航栏。

这个框架值得一试。我现在已经用它构建了许多应用程序。

于 2015-07-22T01:31:53.620 回答