2017-06-14 46 views
0

我有UICollectionView与细胞,包含UIScrollView和里面,还有我使用此代码给init细胞与数据定义UIView(经由XIB)用户更新内容定义的UIView内部UICollectionViewCell

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() 
        } 
       } 
      } 
     } 
    } 

在我DetailedView,我有:

@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为c alled,但fillData不起作用。它不会改变按钮的内容,仍然有默认的文本“按钮”。如何解决这个问题?

+0

它不应该是self.btnTemp.setTitle(“BTN温度”,为:。中性) – Joshua

+1

@Joshua你说得对,我是一个白痴:-) ...发布为asnwer,我会接受它 –

回答

1

只是为了让它官方从评论中删除它并将其作为答案。

您是否尝试过使用self.btnTemp.setTitle("btn temp", for:.normal)

1

我认为你可以forControlState的setTitle尝试