我正在为Android和iOS开发NativeScript-Angular应用,但是在标准后退按钮导航方面遇到了问题。我已经解决了Android的问题,但是找不到适用于iOS的解决方案。
该事件在返回预期路由数据的特定页面时引起问题,从而导致异常:
“错误:当前在页面上导航中-应该重新连接组件而不是激活它”。
我的Android解决方案捕获后退按钮事件并将其取消,然后调用路由器进行导航。
ngOnInit() {
if (app.android) {
app.android.on(app.AndroidApplication.activityBackPressedEvent,
(args: any) => this.backEvent(args));
}
}
backEvent(args) {
args.cancel = true;
this.backToRegister(false);
}
backToRegister(accepted: boolean){
this.router.navigate(['/register',
this.registerParametersEntered.password,
this.registerParametersEntered.confirmPassword,
this.registerParametersEntered.code,
this.registerParametersEntered.email,
accepted]);
}
我想对iOS做类似的事情,例如:-
if (app.ios) {
this.page.on('navigatingFrom', (data) => {
// TODO cancel the back button event
this.backToRegister(false);
})
}
我找不到在iOS上执行此操作的方法-我的研究使我得出结论,无法取消iOS后退按钮-例如,请参见here。
任何想法或替代建议都将不胜感激!
答案 0 :(得分:2)
您无法覆盖iOS的后退按钮。参见此SO question。基本上,您需要创建一个自定义按钮,您可以模仿iOS上后退按钮的外观并添加自己的事件处理程序。这就是您在本机iOS应用程序中执行此操作的方式,以及在NativeScript中执行此操作的方式,因为通过NativeScript使用本机控件。
nativescript中的操作栏可以在内部具有自定义布局,或者您可以只使用一个操作项并将其放在iOS的左侧,同时也可以根据需要在Android上隐藏按钮。