我有UICollectionView
个包含UIScrollView
的单元格,在其中,有一个用户定义UIView
(通过XIB)
我正在使用此代码来使用数据初始化单元格:
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
for v in cell.contentView.subviews {
if let scroll: UIScrollView = v as? UIScrollView {
scroll.contentOffset = CGPoint(x: 0, y: 0)
for s in scroll.subviews {
if let content: DetailedView = s as? DetailedView {
content.fillData()
}
}
}
}
}
在我的详细视图中,我有:
@IBDesignable
class DetailedView: UIView {
@IBOutlet weak var btnTemp: UIButton!
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
// Performs the initial setup.
private func setupView() {
let view = viewFromNibForClass()
view.frame = bounds
// Auto-layout stuff.
view.autoresizingMask = [
UIViewAutoresizing.flexibleWidth,
UIViewAutoresizing.flexibleHeight
]
addSubview(view)
}
// Loads a XIB file into a view and returns this view.
private func viewFromNibForClass() -> UIView {
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: String(describing: type(of: self)), bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil).first as! UIView
return view
}
func fillData(){
self.btnTemp.titleLabel?.text = "btn temp"
print("fill data")
}
@IBAction func btnTempClick(_ sender: Any) {
print("Click")
}
}
一切正常 - 视图可见,btnTempClick
被调用,但fillData
无效。它不会改变按钮的内容,仍然有默认文本“按钮”。如何解决这个问题?
答案 0 :(得分:1)
只是让它正式将其从评论中删除并将其作为答案。
您是否尝试过使用self.btnTemp.setTitle("btn temp", for:.normal)
?
答案 1 :(得分:1)
我认为您可以尝试使用setTitle forControlState