创建IBOutlet / IBAction并将其与自定义类中的UI连接



在我的ViewController中,我有两个UIImageView与UI有IBOutlet连接:

class ViewController: UIViewController {
    @IBOutlet weak var img1: UIImageView!
    @IBOutlet weak var img2: UIImageView!
    ...

现在,我想重构我的项目,让一个专门的类来处理图像ImageManager。所以,ViewController变成这样:

class ViewController: UIViewController {
   var imgMgr: ImageManager!
   override func viewDidLoad() {
        super.viewDidLoad()
        imgMgr = ImageManager()
   }
}

我希望 ImageManager 类以与 ViewController 中相同的方式声明这两个UIMageViews,并与 UI 建立 IBOutlet 连接,但看起来它不能以这种方式工作:

class ImageManager : NSObject {
    @IBOutlet weak var img1: UIImageView!
    @IBOutlet weak var img2: UIImageView!
    ...
}

有没有办法创建一个包含IBOutlet和IBAction的自定义类,该类连接到界面生成器UI组件(而不是在ViewController中执行此操作)?

我认为你不应该这样做。您应该在自定义 UIImage 类中管理图像

,例如:
//inside the function awakFromNib
    self.layer.cornerRadius = 5.0 //will make all the images' corner radius of elements assigned to this custom class rounded
    self.clipsToBounds = true

然后,您将像往常一样将图像出口拖到视图控制器中,但不要将其类设置为"UIImage",而是将其设置为自定义类名

@IBOutlet weak var someImg: CustomImgClass!
  1. 创建 UIView 的 ImageManager 子类。
  2. 在视图控制器下创建一个新视图,并将其类名更改为 ImageManager。
  3. 将两个 UIImageViews 拖到您的 ImageManager 中。
  4. 查看ImageManager View的插座,并将它们连接到新创建的视图。
  5. 在您的视图中,只需将图像管理器添加为子视图即可。

最新更新