Dans mon ViewController
, j'ai deux UIImageView
qui ont une connexion IBOutlet à l'interface utilisateur:créer IBOutlet/IBAction et se connecter avec l'interface utilisateur dans une classe personnalisée
class ViewController: UIViewController {
@IBOutlet weak var img1: UIImageView!
@IBOutlet weak var img2: UIImageView!
...
Maintenant, je veux factoriser mon projet d'avoir un dédié La classe ImageManager
gère les images. Ainsi, le ViewController
devient comme ceci:
class ViewController: UIViewController {
var imgMgr: ImageManager!
override func viewDidLoad() {
super.viewDidLoad()
imgMgr = ImageManager()
}
}
Je veux la classe ImageManager
de déclarer les deux UIMageViews
de la même manière que dans ViewController
et faire le lien avec l'interface utilisateur IBOutlet, mais ressemble à ça ne fonctionne pas dans ce chemin:
class ImageManager : NSObject {
@IBOutlet weak var img1: UIImageView!
@IBOutlet weak var img2: UIImageView!
...
}
Est-il possible de faire une classe personnalisée tenant la IBOutlet & IBAction qui se connecte à l'interface des composants de l'interface utilisateur de constructeur (au lieu de le faire dans ViewController
)?
Cela ne fonctionne pas car vous cassez le modèle MVC. Vous créez un contrôleur qui n'est pas une instance de 'UIViewController' et c'est quand vous commencez à avoir des problèmes. Voulez-vous que votre manager gère une partie de l'écran? Ensuite, il devrait être un contrôleur de vue enfant. Devrait-il juste gérer les données? Ensuite, il devrait être une classe de modèle et ne devrait pas posséder les vues de l'image. – Sulthan