Ich habe UICollectionView
mit Zellen, die UIScrollView
und im Innern enthält, gibt es einen Benutzer UIView
definiert (via XIB)aktualisiert Inhalt von benutzerdefinierten UIView innerhalb UICollectionViewCell
ich diesen Code verwenden Zelle mit Daten init:
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()
}
}
}
}
}
In meinem DetailedView, ich habe:
@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")
}
}
Alle arbeitet - Ansicht sichtbar ist, ist btnTempClick
c alled, aber fillData
funktioniert nicht. Es ändert den Inhalt der Schaltfläche nicht, es gibt immer noch den Standardtext "Button". Wie behebe ich das?
sollte es nicht self.btnTemp.setTitle ("BTN temp", für: .Normal) sein – Joshua
@Joshua Sie haben Recht, ich bin ein Idiot :-) ... poste es als Antwort und ich werde es akzeptieren –