Ios 链接两个(或多个)UISegmented控件
我试图从第一个分段控件获取答案,然后自动选择第二个(以及更多)分段控件的答案,如果选择的答案是Ios 链接两个(或多个)UISegmented控件,ios,swift,uisegmentedcontrol,Ios,Swift,Uisegmentedcontrol,我试图从第一个分段控件获取答案,然后自动选择第二个(以及更多)分段控件的答案,如果选择的答案是否 因此问题1分段控制(是、否、N/A),如果选择了否,则回答问题2(以及Q3、Q4等)分段控制N/A。 我可以让它单独处理Question1,即按No但在Question1上更改为N/A,但我希望它将Question1保留为No,然后将Question2等更改为N/A 我尝试将发件人更改为问题2,但不起作用 @IBOutlet weak var Queston2: UISegmente
否
因此问题1
分段控制(是、否、N/A),如果选择了否
,则回答问题2
(以及Q3、Q4等)分段控制N/A
。
我可以让它单独处理Question1
,即按No
但在Question1
上更改为N/A
,但我希望它将Question1
保留为No
,然后将Question2
等更改为N/A
我尝试将发件人
更改为问题2
,但不起作用
@IBOutlet weak var Queston2: UISegmentedControl! //Will need to add same for Q3 etc
@IBAction func Question1(_ sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 0 {
//Do stuff
}
else if sender.selectedSegmentIndex == 1 {
sender.selectedSegmentIndex = 2 // Change button to 'N/A', works for this question, but i want it to change Question2, not Question1.
@IBAction func Question2(_ sender: UISegmentedControl) { // generally repeats as Question1 above.
我找到了一些类似的答案,但它们似乎比我认为需要的复杂得多。这基本上就是你可以做的:
class ArrayOfSegsViewController: UIViewController {
@IBOutlet var q1SegControl: UISegmentedControl!
@IBOutlet var q2SegControl: UISegmentedControl!
@IBOutlet var q3SegControl: UISegmentedControl!
@IBOutlet var q4SegControl: UISegmentedControl!
@IBOutlet var q5SegControl: UISegmentedControl!
@IBAction func q1SegControlChangeed(_ sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 0 {
// do stuff
} else if sender.selectedSegmentIndex == 1 {
// set all others to "N/A"
[q2SegControl, q3SegControl, q4SegControl, q5SegControl].forEach {
$0.selectedSegmentIndex = 2
}
} else {
// do stuff
}
}
}
在==1
块中,创建一个其他分段控件的数组,并循环,表示“对于每个控件,将选定的分段索引设置为2。”
旁注:使用
lowerCaseFirstChar
用于变量和函数名。使用
UpperCaseFirstChar
对于类/结构/枚举/等So-您有n个
UISegmentedControl
对象,所有对象都带有“是-否-n/A”,当对其中任何一个对象选择“否”时,所有其他对象都应设置为“n/A”?但如果选择了“是”或“不适用”,请执行其他操作?@ColinD-您是否在情节提要中列出了这些内容?还是通过代码创建它们?不管是哪种方式,有了这么多,你最好把它们放在一个数组中。然后,您可以使用ArrayOfControl。forEach
我已经在Storeyboard中列出了这一点,现在可以了。@ColinD-如果这回答了您的问题,请确保将答案标记为已接受,以方便其他任何人。谢谢,现在完成,我不知道这是我的第一个问题。谢谢