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

时间:2016-02-28 14:40:53

标签: ios swift2 ibaction iboutlet

在我的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类以与UIMageViews中相同的方式声明两个ViewController并使用UI建立IBOutlet连接,但看起来它不起作用这样:

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

有没有办法让自定义类持有IBOutlet& IBAction连接到界面构建器UI组件(而不是在ViewController中执行)?

2 个答案:

答案 0 :(得分:0)

  1. 制作UIView的ImageManager子类。
  2. 在ViewController下创建一个新视图,并将其类名更改为ImageManager。
  3. 将两个UIImageViews拖到ImageManager。
  4. 查看ImageManager视图的Outlets并将它们连接到新创建的View。
  5. 在您的viewWillAppear中,只需将ImageManager添加为子视图。

答案 1 :(得分:0)

我认为你不应该这样做。您应该使用例如:

在自定义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!