我正在开发使用超音速的跨平台应用程序。但是,我相信我在理解超音速如何在内部管理视图方面存在问题。
首先,我不想使用本机导航栏,因为它不支持标题内的图像,例如公司徽标。这就是我不想将视图推入视图堆栈的方式(因为它会自动添加 < 返回按钮)。
我的问题是:如何在 appgyver 的超音速中切换视图而不将其推入视图堆栈?类似标签,但没有标签界面。是否可以?
也许我应该只使用不同的移动 Web 应用程序框架?
我正在开发使用超音速的跨平台应用程序。但是,我相信我在理解超音速如何在内部管理视图方面存在问题。
首先,我不想使用本机导航栏,因为它不支持标题内的图像,例如公司徽标。这就是我不想将视图推入视图堆栈的方式(因为它会自动添加 < 返回按钮)。
我的问题是:如何在 appgyver 的超音速中切换视图而不将其推入视图堆栈?类似标签,但没有标签界面。是否可以?
也许我应该只使用不同的移动 Web 应用程序框架?
您可以使用此方法删除本机导航栏:
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。同样,要根据需要设置导航栏的样式,您需要创建自己的导航栏并隐藏本机导航栏。
这个框架值得一试。我现在已经用它构建了许多应用程序。