[英]Custom view action in swift
我创建了一个自定义View
因为不同的UIViewController
具有相同的外观。
当我将自定义View
添加到UIViewController
时,它似乎是一片空白。 没关系 重要的是,如何为ImageView
上的不可见Button
覆盖创建action
? 我似乎无法将不可见Button
Sent Action
连接到我的UIViewController
。
任何帮助将不胜感激!
编辑:@Mannopson这就是我的做法
import UIKit
class BookDetailsView: UIView {
@IBOutlet var wholeView: UIView!
@IBOutlet var borderView: UIView!
@IBOutlet weak var imgBook: UIImageView!
@IBOutlet weak var txtTitle: UITextField!
@IBOutlet weak var txtAuthor: UITextField!
@IBOutlet weak var txtDesc: UITextField!
@IBOutlet weak var btnUploadPhoto: UIButton!
//init for custom draw
override init(frame: CGRect) {
super.init(frame: frame)
customInit()
}
//init for ib
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
customInit()
// fatalError("init(coder:) has not been implemented")
}
private func customInit(){
//load xib
Bundle.main.loadNibNamed("BookDetailsView", owner: self, options: nil)
//add wholeView as subView
addSubview(wholeView)
//auto fit
wholeView.frame = self.bounds
wholeView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
borderView.layer.borderWidth = 3
borderView.layer.cornerRadius = 40
}
}
无法连接插座的可能原因是:
从本质上讲,将操作分配给UIImageView
是一种不好的做法。 您不必使用图像视图来处理水龙头(即使从技术上讲您也可以)。 而是使用简单的UIButton,删除其文本,边框和颜色,然后简单地为其设置图像。 您将得到所需的东西,而没有不必要的覆盖物和类似的东西。 这比较容易并且合适。
编辑 (从揭示另一个问题的评论中提取):
向视图层次结构添加自定义视图。 最典型的方法:
创建一个拥有所有出口的UIViewController
子类。 然后创建一个单独的情节提要文件(或者甚至可以使用current)。 然后只需以编程方式实例化它,然后执行该操作即可访问view
属性。 将该view
作为子视图添加到当前显示的UIViewController
的视图层次结构中。
其他解决方案包括:
1)使用容器视图来管理嵌套的UIViewController
。
2)为您的自定义视图使用单独的XIB
文件,并以编程方式实例化它。
尝试这样的事情:
class BookDetailsView: UIView {
@IBOutlet var wholeView: UIView!
@IBOutlet var borderView: UIView!
@IBOutlet weak var imgBook: UIImageView!
@IBOutlet weak var txtTitle: UITextField!
@IBOutlet weak var txtAuthor: UITextField!
@IBOutlet weak var txtDesc: UITextField!
@IBOutlet weak var btnUploadPhoto: UIButton!
}
在UIViewController
的viewDidLoad
方法中加载自定义视图:
let customView = Bundle.main.loadNibNamed("YourXIBName", owner: self, options: nil).first as! YourUIViewSubclass
// Customize appearence
customView.btnUploadPhoto.backgroundColor = UIColor.red
// Add an action for this button
customView.btnUploadPhoto.addTarget(self, action: #selector(yourFunctionForUIButton), forControlEvents: .touchUpInside)
self.view.addSubview(customView)
自定义函数:
func yourFunctionForUIButton() {
}
希望能帮助到你。 这不是您主要问题的答案,而只是建议
您应该向ImageView添加手势。
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:)))
imageView.isUserInteractionEnabled = true
imageView.addGestureRecognizer(tapGestureRecognizer)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.