uni-app ios端设置webView.setTitleNViewButtonStyle时app闪退

uni-app ios端设置webView.setTitleNViewButtonStyle时app闪退

开发环境 版本号 项目创建方式
Windows Windows 10 企业版 HBuilderX
iOS iOS 14
iPhone iPhone Xr

示例代码:

const webView = this.$scope.$getAppWebview();  
webView.setTitleNViewButtonStyle(0, {  
   type:'none',  
   color: '#000'    
});

操作步骤:

const webView = this.$scope.$getAppWebview();  
webView.setTitleNViewButtonStyle(0, {  
   type:'none',  
   color: '#000'    
});

预期结果:

const webView = this.$scope.$getAppWebview();  
webView.setTitleNViewButtonStyle(0, {  
   type:'none',  
   color: '#000'    
});

导航栏按钮样式可设置

实际结果:

设置后 ios 闪退、

bug描述:

ios 端 设置导航栏 按钮样式 app 会闪退、 安卓正常


更多关于uni-app ios端设置webView.setTitleNViewButtonStyle时app闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

请上传一个完整的示例工程,方便排查问题

更多关于uni-app ios端设置webView.setTitleNViewButtonStyle时app闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html


新建个工程 就可以了、不要意思、可能是我代码写错了

没有闪退,可以参考官方示例:https://ext.dcloud.net.cn/plugin?id=1765

根据你提供的信息,这个问题通常是由于在iOS端调用setTitleNViewButtonStyle时参数不正确或调用时机不当导致的。以下是几个关键点:

  1. 索引有效性:确保第一个参数(按钮索引)对应的是实际存在的标题栏按钮。如果索引超出范围,在iOS上可能引发崩溃。

  2. 参数格式:检查type字段的值是否有效。'none'通常用于隐藏按钮,但需确认该索引位置的按钮支持此类型。此外,color字段在type'none'时可能被忽略,但确保其值为合法颜色字符串。

  3. 调用时机:在uni-app中,$getAppWebview()可能返回null或未完全初始化的Webview对象。建议在页面生命周期(如onReady)或确保Webview已创建后调用。

  4. 平台差异:iOS对原生API的调用更严格,参数错误容易导致闪退。可尝试在调用前增加条件判断,仅对iOS平台执行相关代码,或使用uni-app的条件编译。

建议按以下方式调整代码:

// 确保在页面准备就绪后调用
onReady() {
    const webView = this.$scope.$getAppWebview();
    if (webView && webView.setTitleNViewButtonStyle) {
        // 可添加平台判断
        webView.setTitleNViewButtonStyle(0, {
            type: 'none',
            color: '#000'
        });
    }
}
回到顶部