创建 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
中执行)?
- 使 ImageManager 成为 UIView 的子class。
- 在您的 ViewController 下创建一个新视图并将其 class 名称更改为 ImageManager。
- 将两个 UIImageView 拖到您的 ImageManager。
- 查看 ImageManager 视图的出口并将它们连接到新创建的视图。
- 在您的 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!
在我的 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
中执行)?
- 使 ImageManager 成为 UIView 的子class。
- 在您的 ViewController 下创建一个新视图并将其 class 名称更改为 ImageManager。
- 将两个 UIImageView 拖到您的 ImageManager。
- 查看 ImageManager 视图的出口并将它们连接到新创建的视图。
- 在您的 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!