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

create IBOutlet / IBAction & connect it with UI in a custom class

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

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

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

class ViewController: UIViewController {
   var imgMgr: ImageManager!

   override func viewDidLoad() {
        super.viewDidLoad()
        imgMgr = ImageManager()
   }
}

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

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

有什么方法可以自定义 class 持有连接到界面生成器 UI 组件的 IBOutlet 和 IBAction(而不是在 ViewController 中执行)?

  1. 使 ImageManager 成为 UIView 的子class。
  2. 在您的 ViewController 下创建一个新视图并将其 class 名称更改为 ImageManager。
  3. 将两个 UIImageView 拖到您的 ImageManager。
  4. 查看 ImageManager 视图的出口并将它们连接到新创建的视图。
  5. 在您的 viewWillAppear 中,只需将 ImageManager 添加为子视图。

我认为你不应该这样做。您应该只管理自定义 UIImage class 中的图像,例如:

//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

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

@IBOutlet weak var someImg: CustomImgClass!