我有一个分段控制,如果你点击其中一个分段,效果很好,但如果你不点击任何东西,让它坐在自然休息点,这是第一个分段,它不工作
我通过点击另一个部分并继续应用程序来测试这一点,它工作了,我还通过点击另一个部分,然后回到第一个部分来测试,它工作了
@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
}
}
这是有意义的,因为它被 Package 在IBAction中,没有按下任何东西,因此它没有被触发。我如何修复这个问题?
编辑
不起作用的意思是,如果突出显示的段显示为4,并且用户点击继续按钮(不同的按钮),则变量将更新为字符串“4”,然后firebase将更新为x = 4
因此,当您登录到页面时,默认情况下会突出显示4段,如果您希望4成为您的选项,则可以不使用它,并单击“继续”按钮...我的问题是,如果您不与段控件交互,而是实际单击4,则代码永远不会运行,但如果您单击6,然后返回到4,则会触发
3条答案
按热度按时间63lcw9qa1#
您的问题不太清楚到底是什么坏了。如果您不点击它,什么不起作用?一般来说,使用UISegmentedControls有两个步骤。在第一步中,您可以在初始化中设置它-即viewDidLoad -通过:
当然,您的初始值不能是numberOfParticipants,因为控件只有6个值。
然后第二步是类似于IBAction的东西,看起来很好。你对幻数的使用当然有点问题。
fzsnzjdm2#
我是这样理解这个问题的:你有一个“继续”按钮,如果你点击它,你希望它反映出分段控件的状态。对吗?
如果是这种情况,则不需要IBAction,只需在Continue按钮的IBAction中直接读取
segmentControl.selectedSegmentIndex
即可。wlwcrazw3#
我理解你的问题,我自己也有同样的问题。我做了实验,因为我不想让我的分段控件中的任何段被突出显示或选择,因为这会给我的用户造成混乱,如果突出显示的开始索引实际上是用户所需要的,然后当按下时没有在切换情况区域内执行操作。所以...我将索引值设为-1,这根本不会突出显示段的任何部分,它可以满足我的需求,并让用户选择所需的段。
我在我的ViewDidLoad()中设置了这个