如何通过调用函数将数据从视图传递到子视图?

时间:2017-08-03 04:48:49

标签: ios swift views

我是swift的新手,我试图制作一个特定的子视图,这是一个通过调用父集合系列中的函数来选择的collectionViewcell。

我正在调用setChosenToBeTrue(),它在子视图中将isChosen变量设置为true,但由于一些奇怪的原因,变量的值并未真正设置?可能是什么问题?谢谢!我查看了一些通过故事板传递数据的资源,或者有一些旧的不是很快,我仍然感到困惑。

这是我的代码

在父collectioncell中,

  func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
 {            

        let rightCell = collectionView.dequeueReusableCell(withReuseIdentifier: rightCell, for: indexPath) as! RightCell                       
        rightCell.setChosenToBeTrue()
        return rightCell
    }

在子视图中

var isChosen: Bool = false
override init(frame: CGRect) {
      super.init(frame: frame)
      setupViews()
 }

func setChosenToBeTrue() {
    self.isChosen = true //function is called but setting it here,  
     //when it reaches setUpViews(), this boolean is still false
}

func setupViews(){
        self.isChosen = true // setting it here works (obviously)
        print(isChosen)
        backgroundColor = UIColor.gray
}

1 个答案:

答案 0 :(得分:0)

这很简单。 在调用setChosenToBeTrue()之前调用init()和setupViews()方法。因此,您在设置视图后更新此变量。

试试这个,例如:

var isChosen: Bool = false {
        didSet {
            setupViews()
        }
    }