Swift Segmented Control默认状态

时间:2016-06-10 00:19:23

标签: swift swift2 uisegmentedcontrol

我有一个分段控件,如果你点击其中一个段可以很好用但是如果你没有点击任何东西并让它坐在自然静止点,这是它不起作用的第一个段

我通过点击另一个细分并继续使用该应用程序进行了测试,并且我也通过点击另一个细分受测试然后回到第一个细分受众群进行了测试

@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就会触发

3 个答案:

答案 0 :(得分:3)

你的问题在定义究竟是什么似乎被打破时不是很明确。如果你不点击它什么不起作用?通常,使用UISegmentedControls涉及2个步骤。在步骤1中,您可以在初始化中设置它 - 即viewDidLoad - 通过:

segmenControl.selectedSegmentIndex =  your_initial_value

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

然后第2步就像你的IBAction看起来很好。你使用魔术数字当然有点问题。

答案 1 :(得分:2)

这就是我理解这个问题的方法: 你有一个"继续"按钮,如果你点击它,你希望它反映分段控件的状态。正确的吗?

如果是这种情况,您就不需要IBAction,只需直接在“继续”按钮的IBAction中阅读$ gcc -Wall -Werror fwrite.c $ ./a.out 007B 04D2 F3B7 $ hexdump -Cv a.bin 00000000 7b 00 d2 04 b7 f3 |{.....| 00000006

答案 2 :(得分:0)

我了解您的问题,我自己也遇到了同样的问题。 我进行了试验,因为我根本不想突出显示或选择分段控件中的任何分段,因为这会引起用户的困惑,并且如果突出显示的开始索引确实是用户所需的,那么在按下时就不会在其中执行操作开关盒区域。 所以...我将Index Value设为-1,这根本不突出显示细分的任何部分,它可以满足我的要求,并让用户选择所需的细分。

我在ViewDidLoad()中设置了它

mySegmentedControlOutlet.selectedSegmentIndex = -1