swift - xib 转换为以编程方式查看
问题描述
我需要使用自定义视图而不是使用 xib 文件创建的视图。
如何转换和使用 nib/xib 文件以编程方式查看?
class CustomCell: UITableViewCell {
var item: ViewModelItem? {
didSet {
titleLabel?.text = item?.title
}
}
override func awakeFromNib() {
super.awakeFromNib()
selectionStyle = .none
}
@IBOutlet weak var titleLabel: UILabel?
static var nib:UINib {
return UINib(nibName: identifier, bundle: nil)
}
static var identifier: String {
return String(describing: self)
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
accessoryType = selected ? .checkmark : .none
}
}
我添加了它而不是 xib。我应该如何发送这个?
我希望以编程方式添加和控制 xib 文件。我希望以编程方式添加和控制 xib 文件。
class CustomCellView: UIView {
convenience init(frame: CGRect,checkboxTag:Int?) {
self.init(frame: frame)
self.addCustomView(checkboxTag: checkboxTag)
}
override init(frame: CGRect) {
super.init(frame: frame)
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func addCustomView(checkboxTag : Int?) {
var checkbox: UIButton = ClickingCheckbox()
if((checkboxTag) != nil)
{
checkbox.tag = checkboxTag!
}
self.addSubview(checkbox)
}
}
class ClickingCheckbox: UIButton {
convenience init() {
self.init(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
self.setImage(UIImage(named: "unfilled.png"), for: UIControlState.selected)
self.setImage(UIImage(named: "filled.png"), for: UIControlState.normal)
self.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
}
@objc private func buttonTapped() {
self.isSelected = !self.isSelected
}
}
解决方案
当您使用 Nib 中的视图时,它会调用AwakeFromNib()
方法,代码中的自定义视图使用 Init() 方法。要将 Xib 转换为编程代码,您需要在Init()
方法中设置所有 UI 并将所有 initialConfiguration 方法AwakeFromNib()
从Init()
推荐阅读
- javascript - 使用 Promise 的内置方式,而不是添加事件监听器
- reactjs - 使用酶测试 Redux + React 应用程序的问题:
- python - 使用元素树为嵌套 XML 创建唯一代码
- php - 使用变量和文本 php /codeigniter 发送表单字段名称
- excel - Countif 不会正确复制或更新
- android - 如何使用 apk 路径执行“flutter run”?
- c++ - 如何将“返回”功能编程为 QT 中 MainWindow 的菜单栏选项?
- discord - 如何在不和谐中为用户添加角色?
- html - 角度下拉菜单为空
- node.js - 我的 node.js 应用程序将如何访问上传的图像?