ios - 在 swift 类中发现 ObjectiveC 类中没有已知的选择器类方法
问题描述
我已经在一个 swift 类中编写了一个类函数,然后尝试从一个objectiveC 类访问相同的函数,得到选择器“myMethodName”的无已知类方法。我也做过#import "ProjectName-Swift.h"
。它与低于 10.1 的 Xcode 一起正常工作。请尽早帮助我。提前致谢。
import UIKit
typealias LoginCompletionHandler = (_: Bool) -> Void
class SCLoginViewController: UIViewController {
var myLoginCompletionBlock: LoginCompletionHandler? = nil
// MARK: - View Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
}
//PRAGMA:- Class Methods
class func showOnNavigation(navigationController:UINavigationController, completionBlock:@escaping LoginCompletionHandler) {
let vc = SCLoginViewController.init(nibName: "SCLoginViewController", bundle: nil)
vc.myLoginCompletionBlock = completionBlock
navigationController.pushViewController(vc, animated: true)
}
}
#import "LoginOptionVC.h"
#import "Project-Swift.h"
@interface LoginOptionVC () <>
@end
@implementation LoginOptionVC
- (instancetype)initWithBarButtonType:(BarButtonType)btnType showClubLogo:(BOOL)showLogo onCompletion:(CompletionHandler) completionBlock {
self = [[ClubLoginOptionVC alloc]initWithNibName:@"ClubLoginOptionVC" bundle:nil];
if (self) {
self.myCompletionBlock = completionBlock;
}
return self;
}
#pragma mark - View LifeCycle
- (void)viewDidLoad {
[super viewDidLoad];
- (IBAction)clickLogin:(id)sender {
[SCLoginViewController showOnNavigationWithNavigationController:self.navigationController completionBlock:^(BOOL isSuccess) {
if (isSuccess) {
NSLog(@"logged in ");
}
if (self.myCompletionBlock) {
self.myCompletionBlock(isSuccess);
}
}];
}
}
解决方案
除了 Scriptable 的答案。如果你想在一个类中向 Objective-C 公开所有函数。然后添加@objcMembers
属性。
@objcMembers class MyController: UIViewController {
class func showOnNavigation(navigationController:UINavigationController, completionBlock:@escaping LoginCompletionHandler) {
}
}
通过在类中添加@objcMembers 属性,您无需@objc
在函数中添加属性。
推荐阅读
- python - 如何在 python pycharm 中安装 zmq 并修复错误
- sql - 将多对多相关数据集提取到单个结构中
- database - 使用 testcafe 从数据库返回数据集
- java - 如何只打印一次重复的数组
- dart - 将一个 dart 文件中的列表返回到另一个 dart 文件
- flutter - 如何使用 SliverAppBar 在 Flutter 中垂直居中文本/标题?
- netsuite - Netsuite:SuiteCommerce 高级本地开发
- html - 为什么拦截方法在调用后不更新 ShowSpinner 变量
- python - nested list comprehension to achieve nested lists
- asp.net - IIS 中的 ASP.NET 模拟