Dans mon Swift 3/application Obj-C, je suis en train de mettre le délégué de mon RootViewController à son contrôleur de navigation, mais je obtenir l'erreur suivante:Swift 3 - réglage délégué RootViewController au contrôleur de navigation
Cannot assign value of type 'NavController.Type' to type 'RootViewControllerDelegate'
NavController.swift
@available(iOS 10.0, *)
@objc class NavController: UINavigationController, RootViewControllerDelegate {
static func instantiate() -> NavController? {
let storyboard = UIStoryboard.init(name: "MyStoryboard", bundle: nil)
let navVC = storyboard.instantiateViewController(withIdentifier: "NavController") as? NavController
let rootVC = navVC?.viewControllers.first as! RootViewController
rootVC.delegate = self // <<<< ERROR OCCURS HERE
return navVC
}
func pressedNextButton()
{
NSLog("Next button works!")
}
}
RootViewController.swift
@objc protocol RootViewControllerDelegate {
func pressedNextButton()
}
@available(iOS 10.0, *)
@objc class RootViewController: UIViewController, NSFetchedResultsControllerDelegate, UITableViewDataSource, UITableViewDelegate {
var delegate: RootViewControllerDelegate?
@IBAction func nextButton(_ sender: UIBarButtonItem) {
self.delegate?.pressedNextButton()
}
}
MainProgram.m
@interface MYQAddDeviceViewController()
@property (nonatomic, strong) NavController * navVC;
@end
- (void)viewDidLoad
{
[super viewDidLoad];
self.navVC = [NavController instantiate];
}
Toutes les idées sur la façon dont je peux résoudre cette erreur?
Pourquoi avez-vous mis @objc avant la définition de classe sont deux sous-classes de UIViewController?. – Mozahler
Ces classes rapides sont utilisées dans la partie Obj-C de mon application qui nécessite l'utilisation de @objc. – Vee
Vous obtenez cela gratuitement en sous-classant off de uiviewcontroller. En d'autres termes, vous n'en avez plus besoin. – Mozahler