我正在开发使用超音速的跨平台应用程序。但是,我相信我在理解超声速如何在内部管理视图方面存在问题。
首先,我不想使用本机导航栏,因为它不支持标题内的图像,如公司徽标。那是我不想将视图推入视图堆栈的方式(因为它会自动添加
我的问题是:如何在appgyver的超音速中切换视图而不将其推入视图堆栈?类似标签,但没有标签界面。可能吗?
也许我应该只使用其他移动Web应用程序框架?
最佳答案
您可以使用this method删除本机导航栏:
supersonic.ui.navigationBar.hide(options).then( function() {
supersonic.logger.debug("Navigation bar hidden without animation.");
});
还有另一种建议隐藏导航栏,使其不会在屏幕found here上闪烁:
导航栏未隐藏
我注意到很多时候,条形图不会被隐藏,因为调用是在视图完成加载之前进行的,从而导致错误,并且条形图没有隐藏。
快速解决:
您需要一种方法来告知视图已完成加载。我们该怎么做? window.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。同样,要根据需要设置导航栏样式,您需要创建自己的导航栏并隐藏本机导航栏。
值得尝试使用此框架。我现在已经用它构建了许多应用程序。