swift - 来自单个 UIButton 的两个“不同”按钮?
问题描述
我有一组基本的按钮,我想根据用户是否按下“shift”类型的单独按钮来更改功能和外观。
@IBOutlet var shiftBtn: UIButton!
@IBAction func shiftBtn(_ sender: UIButton) {
changeLookOfsomeBtns() /* ?? */
}
@IBOutlet var someBtns: [UIButton]!
@IBAction func someBtns(_ sender: UIButton) {
if shiftBtn.selected == true {
doSomething()
} else if shiftBtn.selected == false {
doSomethingElse()
}
这是正确的方法吗?我一直坚持应用什么技术来更改 someBtns 的功能选项和图像。
谢谢!
解决方案
这里:
if shiftBtn.selected == true {
doSomething()
} else if shiftBtn.selected == false {
doSomethingElse()
}
您似乎正在检查按钮上的(不存在的)属性来决定要做什么。一般来说,您不应该根据按钮的属性做出决定。相反,您应该有一个单独的属性(我们称之为它shifted
)来指示 shift 按钮是否被激活。
var shifted = false {
didSet {
if shifted {
changeSomeButtonsToShiftedAppearance()
} else {
changeSomeButtonsToNormalAppearance()
}
}
}
@IBAction func someBtns(_ sender: UIButton) {
if shifted {
doSomething()
} else {
doSomethingElse()
}
并在按下 shift 时设置此属性:
@IBAction func shiftBtn(_ sender: UIButton) {
shifted = !shifted
}
推荐阅读
- flutter - Flutter 关闭应用时如何保存数据
- php - 在 Codeigniter 的 Rest API 中使用 JWT 令牌的最佳方式。登录和注册的表架构应该是什么?如果我将令牌存储在表中
- ansible - Ansible:使用 with_items 模块时如何跳过一些空项目?
- javascript - 在调用 router.push() 之前加载 Vue 组件
- mongodb - mongodb函数返回格式
- javascript - 如何在本机反应中使用后退按钮重新渲染组件?
- react-native - ios13是强制登录的吗?
- image-segmentation - 医学图像分割:python 中 3D 图像的最大表面距离?
- angular - 使用什么符号技术来描述 Angular 语法?
- vb.net - 如何使checkboxlist多列