swift的module扩展提示方法找不到

新手上路,请多包涵

按照官网所描述的步骤

  1. 新建SelfModule.m/.h文件,并导入project-swift.h,对外定义暴露jumpNextPage(params : String)方法

#import "SelfModule.h"
#import "Project-Swift.h"
#import "Project-Bridging-Header.h"

@implementation SelfModule
#pragma clang diagnostic push //关闭unknow selector的warrning
#pragma clang diagnostic ignored "-Wundeclared-selector"

@synthesize weexInstance;

    WX_EXPORT_METHOD(@selector(jumpNextPage))

#pragma clang diagnostic pop
@end
  1. 新建SelfModule.swift文件,扩展SelfModule方法

public extension SelfModule{
    
    public func jumpNextPage(params : NSString){
        let controller = UIViewCtroller()
        weexInstance.viewController.navigationController?.pushViewController(controller, animated:true)
    }
}
  1. 在AppDelegate中注册Module,

WXSDKEngine.registerModule("self_module", with: NSClassFromString("SelfModule"))

结果提示

method:jumpNextPage for module:self_module doesn't exist, maybe it has not been registered [;

在Android上是没有任何问题的,但是在iOS上报错,求解原因

阅读 6.2k
2 个回答

你看一下导入桥接文件没有,在Project-Bridging-Header.h这个里面

如果使用的swift4的话,在函数前面加上 @objc 将函数动态化,如果不是,就不需要强制加@objc了

public extension SelfModule{

@objc public func jumpNextPage(_ params : NSString){
    let controller = UIViewCtroller()
    weexInstance.viewController.navigationController?.pushViewController(controller, animated:true)
}

}

还有,注册的时候,oc代码的selector也是错误的

WX_EXPORT_METHOD(@selector(jumpNextPage:))

修改完成后,clean下再编译

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题