【问题标题】:Swift Segmented Control default stateSwift 分段控制默认状态
【发布时间】:2016-06-10 00:19:23
【问题描述】:

我有一个分段控件,如果你点击其中一个片段,但如果你不点击任何东西,让它坐在自然休息点,这是它不起作用的第一个片段

我通过点击另一个片段并继续应用程序进行了测试,它可以工作,我还通过点击另一个片段然后返回第一个片段进行了测试,它可以工作

@IBAction func segmentedControl(sender: UISegmentedControl) {

    switch segmenControl.selectedSegmentIndex {

    case 0:
        numberOfParticipants = "4"
    case 1:
        numberOfParticipants = "6"
    case 2:
        numberOfParticipants = "8"
    case 3:
        numberOfParticipants = "10"
    case 4:
        numberOfParticipants = "12"
    case 5:
        numberOfParticipants = "14"
    case 6:
        numberOfParticipants = "16"
    default:
        break
    }


}

这是有道理的,因为它被包裹在 IBAction 中并且没有被按下,因此它没有被触发。我该如何解决这个问题?

编辑

不起作用我的意思是如果突出显示的段显示 4 并且用户点击继续按钮(不同的按钮)然后用字符串“4”更新变量,然后更新 firebase 说 x = 4

因此,默认情况下,当您登陆页面时,会突出显示 4 段,如果您希望 4 成为您的选项,您可以不理会它并点击继续按钮...我的问题是,如果您不这样做'不与段控件交互并实际点击 4 然后代码永远不会运行,但如果你点击 6 然后回到 4 它会触发

【问题讨论】:

  • 什么问题?正如您自己所说,如果用户不点击任何东西,则什么也不会发生。有什么问题? (我不是在吹毛求疵;我真的不明白。“如果你不点击任何东西,让它坐在自然的休息点,这是它不起作用的第一部分”这句话在我的脑海中没有传达任何信息;什么在这里“工作”意味着吗?)
  • 我已经更新了我的问题...基本上取决于您点击继续按钮时突出显示的部分代码发送到 firebase...因为如果您想要,则不会对该部分进行任何交互默认值为 4 代码不会运行...我希望能清除它
  • 看起来你需要为 numberOfParticipants 定义一个默认值,以防没有标签被按下

标签: swift swift2 uisegmentedcontrol


【解决方案1】:

您的问题在定义究竟是什么似乎被破坏时不是很清楚。如果你不点击它,什么不起作用?一般来说,使用 UISegmentedControls 涉及两个步骤。在第 1 步中,您在初始化中设置它 - 即 viewDidLoad - via:

segmenControl.selectedSegmentIndex =  your_initial_value

当然你的初始值不能是 numberOfParticipants 因为控件只有 6 个值..

然后第 2 步类似于您的 IBAction,看起来不错。你使用幻数当然有点问题。

【讨论】:

  • 你说的幻数是什么意思?我已经更新了我的问题
  • 是的 - 我看到并感到困惑:]您在原始问题中没有提到任何继续按钮、firebase 或任何其他按钮。在任何情况下,看起来您都依赖分段控件来初始化事物。但它应该是相反的。您应该有一个默认值来初始化您的分段控件,并且该值还应该控制当前不工作的代码的其他部分。顺便说一句:幻数是指在代码中直接使用数字。
  • 从来不知道初始化会导致如此头痛。谢谢!
【解决方案2】:

这就是我对问题的理解: 您有一个“继续”按钮,如果您点击它,您希望它反映分段控件的状态。对吗?

如果是这种情况,则不需要IBAction,只需在Continue按钮的IBAction中直接读取segmentControl.selectedSegmentIndex即可。

【讨论】:

    【解决方案3】:

    我理解你的问题,我自己也遇到了同样的问题。 我进行了实验,因为我根本不希望在我的分段控件中突出显示或选择任何分段,因为这会给我的用户造成混淆,并且如果突出显示的起始索引实际上是用户需要的,那么当按下时不会执行其中的操作开关盒区域。 所以...我将索引值设为 -1,这根本不会突出显示段的任何部分,它可以满足我的要求并使用户选择所需的段。

    我在 ViewDidLoad() 中设置了这个

    mySegmentedControlOutlet.selectedSegmentIndex = -1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多