2017-06-14 2 views
0

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?

+0

sollte es nicht self.btnTemp.setTitle ("BTN temp", für: .Normal) sein – Joshua

+1

@Joshua Sie haben Recht, ich bin ein Idiot :-) ... poste es als Antwort und ich werde es akzeptieren –

Antwort

1

Nur um es offiziell zu machen es aus dem Kommentar zu entfernen und es als eine Antwort zu setzen.

haben Sie versucht mit self.btnTemp.setTitle("btn temp", for:.normal)?

1

Ich glaube, Sie mit setTitle forControlState versuchen

Verwandte Themen