【问题标题】:Missing Return in closure - Swift Trying to hide/show in UISegmentedControl关闭时缺少返回 - Swift 试图在 UISegmentedControl 中隐藏/显示
【发布时间】:2016-10-12 21:44:55
【问题描述】:

我试图在您切换到一个项目时隐藏一个项目,并在切换回时显示它,但它告诉我“在关闭时缺少返回预期会返回 UISegmentedControl”。这是否意味着我必须解决问题?如果是这样,我将如何去做?这是我制作的第一个没有情节提要的应用程序,而我正在编写 UI。

Issue Navigator

lazy var loginRegisterSegmentControl: UISegmentedControl = {
    let sc = UISegmentedControl(items: ["Login", "Register"])
    sc.translatesAutoresizingMaskIntoConstraints = false
    sc.tintColor = UIColor.white
    sc.selectedSegmentIndex = 1

    switch sc.selectedSegmentIndex
    {
    case 0: self.nameTextField.isHidden = true
    case 1: self.nameTextField.isHidden = false
    default:
        sc.addTarget(self, action: #selector(handleLoginRegisterChange), for: .valueChanged)
       return sc
    }

}()

【问题讨论】:

  • 请注意,在您的代码中,sc.selectedSegmentIndex总是 1,因此即使您修复了“缺少返回”问题,case 0:default: 也永远不会被执行。你可能需要重新考虑你的逻辑。
  • 我该怎么做?

标签: swift xcode show-hide uisegmentedcontrol


【解决方案1】:

在初始化lazy var loginRegisterSegmentControl: UISegmentedControl 时,您需要确保将return sc 放在初始化程序的末尾。

【讨论】:

  • 那么上面的开关?
  • @DarinWilson,如果你把它放在 开关之上,开关将永远不会被执行。还有其他选择吗?
  • @YordiLorenzo 我把它放在开关下面,并试图把它放在 } 和 }() 之间仍然得到同样的错误。
  • 你需要把它完全放在switch语句的下面,而不是默认情况下。如果您更新了,请上传您的代码以进一步帮助您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 2021-09-23
  • 1970-01-01
相关资源
最近更新 更多