ios - 需要帮助将 bool 重写为三元运算符

标签 ios swift

我正在尝试为 if 语句编写更多的三元运算符来练习,但我在将其转换为三元运算符时遇到了困难,需要一些帮助。

我正在尝试为状态、导航栏、工具栏和文本 slider 设置淡入淡出动画。

我有:

var isHidden = false

@objc func textViewTapped(_ sender: UIGestureRecognizer) {  
    navigationController!.setNavigationBarHidden(!isHidden, animated: false)
    isHidden = navigationController!.isNavigationBarHidden

    UIView.animate(withDuration: 0.5, animations: {
        self.toolbar.isHidden = self.toolbar.isHidden ? false : true
        self.textSlider.isHidden = self.textSlider.isHidden ? false : true
        self.setNeedsStatusBarAppearanceUpdate()
    }, completion: nil)
}

如您所见,我将工具栏和 textSlider 作为三元运算符使用。我需要帮助转换这个位:

navigationController!.setNavigationBarHidden(!isHidden, animated: false)
    isHidden = navigationController!.isNavigationBarHidden

这是进入我看不到的 View ,我正在尝试转换它而变得扭曲。

最佳答案

你不需要在这里使用三元运算符,只写这个就足够了:

UIView.animate(withDuration: 0.5, animations: {
    self.toolbar.isHidden = !self.toolbar.isHidden
    self.textSlider.isHidden = !self.textSlider.isHidden
    self.setNeedsStatusBarAppearanceUpdate()
}, completion: nil)

但我猜你这样做是为了练习使用三元运算符,但请注意,有些情况下三元运算符根本没用。并非每个 if 语句都可以转换为一个。例如这个:

if someCondition {
    someAction1()
    someAction2()
} else {
    someActon3()
    someAction4()
}

不能将两条语句写成三元运算符的操作数之一。

对于有问题的两行,您可以遵循与上述几行相同的逻辑:

navigationController!.setNavigationBarHidden(isHidden ? false : true, animated: false)
isHidden = isHidden ? false : true // this is really redundant...

三元运算符的一个更合适的用例是当您想根据条件使用非 Bool 类型的不同值时。例如:

label.text = isHidden ? "I am hidden!" : "I am visible!"

关于ios - 需要帮助将 bool 重写为三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52399038/

相关文章:

swift - 保证局部变量中引用的生命周期

json - 奇怪的打印 JSON 格式

ios - Xcode 导出步骤失败 : IDEDistributionThinningStep

ios - 这是什么代码监控? -> `stack_logging_type_dealloc|stack_logging_type_alloc`

ios - Mapbox Geocoding API iOS 是否对大片水域(海洋)进行反向地理编码?

ios - 使用 Xcode UI 测试来测试底层框架行为

swift - Swift 2.1 中的字节数据类型

swift - 如何在 Swift 中设置定时器

ios - SpriteKit - 标签在背景中的基本定位

json - 如何将 SwiftyJson 字符串数组保存到字符串数组中