2016-02-28 90 views
0

连接在我ViewController,我有两个UIImageView其中有IBOutlet中连接到UI:创建IBOutlet中/ IBAction为与它的用户界面中自定义类

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为它连接到Interface Builder的UI组件(而不是在ViewController做)?

+0

它不起作用,因为您打破了MVC模式。您正在创建一个不是“UIViewController”实例的控制器,这就是当您开始遇到问题时。你想让你的经理处理部分屏幕?那么它应该是一个子视图控制器。应该只是它处理数据?那么它应该是一个模型类,不应该拥有图像视图。 – Sulthan

回答

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! 
0
  1. 制作UIView的ImageManager子类。
  2. 在您的ViewController下创建一个新的View,并将其更名为ImageManager。
  3. 将两个UIImageView拖放到ImageManager中。
  4. 查看ImageManager View Out Outlets并将它们连接到新创建的视图。
  5. 在您的viewWillAppear只需添加ImageManager作为子视图。