Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

283
Views
No se encontró ningún método de clase conocido para el selector en la clase ObjectiveC escrito en la clase Swift

Escribí una función de clase en una clase rápida y luego intenté acceder a la misma desde una clase de ObjectiveC sin obtener un método de clase conocido para el selector 'myMethodName'. También hice #import "ProjectName-Swift.h" . Estaba funcionando correctamente con Xcode por debajo de 10.1. Por favor, ayúdame lo antes posible. Gracias por adelantado.

 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); } }]; } }
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Adición a la respuesta de Scriptable. Si desea exponer todas las funciones a Objective-C en una clase. Luego agregue el atributo @objcMembers .

 @objcMembers class MyController: UIViewController { class func showOnNavigation(navigationController:UINavigationController, completionBlock:@escaping LoginCompletionHandler) { } }

Al agregar el atributo @objcMembers en una clase, no necesita agregar el atributo @objc en las funciones.

over 4 years ago · Santiago Trujillo Report

0

Agregue el atributo @objc a la función para exponer el código Swift a Objective-C

 @obj class func showOnNavigation(navigationController:UINavigationController, completionBlock:@escaping LoginCompletionHandler)
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!