使用两种不同类型的swap(_:_ :)

时间:2017-08-31 15:36:27

标签: ios swift swap

我目前有我的主视图设置,当我点击UILabel时,它会将其'不透明度更改为0并且文本字段最初被隐藏并且其'不透明度设置为0,并显示上述值倒置(hidden = false, opacity = 1)。

我打算经常交换这两个视图之间的值,所以我认为使用swap(_:_:)函数是理想的。不幸的是,我得到的错误是UILabelUITextField不是同一类型:

Cannot convert value of type 'UITextField!' to expected argument type 'UILabel'

有没有办法解决这个问题,还是我会被困在创建自己的功能?

@IBAction func onTapToEnterBillAmount(_ sender: UITapGestureRecognizer) {
    UIView.animate(withDuration: 0.2, animations: {
        swap(&self.tapToEnterBillAmountLabel, &self.billAmountTextField)
    })
}

1 个答案:

答案 0 :(得分:1)

由于swap(_:_:)要求两个参数属于同一类型,请尝试交换UIButton / UILabel的实际匹配属性:

@IBAction func onTapToEnterBillAmount(_ sender: UITapGestureRecognizer) {
    UIView.animate(withDuration: 0.2, animations: {
        swap(&self.tapToEnterBillAmountLabel.alpha, &self.billAmountTextField.alpha)
    }, completion: { _ in
        swap(&self.tapToEnterBillAmountLabel.isHidden, &self.billAmountTextField.isHidden)
    })
}