链接两个(或更多)UISegmented 控件
Linking two (or more) UISegmented Controls
我正在尝试从我的第一个分段控件中获取答案,然后自动 select 第二个(和更多)分段控件的答案,如果 selected 答案是 No
.
所以Question1
分段控制(是,否,N/A),如果No
是selected,则回答Question2
(和Q3、Q4 等)分段控制到 N/A
。
我可以让它单独在 Question1
上工作,即按 No
但在 Question1
上更改为 N/A
,但我希望它离开 Question1
作为 No
,然后将 Question2
等更改为 N/A
。
我尝试将 sender
更改为 Question2
,但这不起作用。
@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 {
[=10=].selectedSegmentIndex = 2
}
} else {
// do stuff
}
}
}
在 == 1
块中,您创建一个包含其他分段控件的数组并循环遍历,即 "for each control, set the selected segment index to 2."
旁注:使用
lowerCaseFirstChar
用于变量和函数名称。使用
UpperCaseFirstChar
用于类/结构/枚举/等
我正在尝试从我的第一个分段控件中获取答案,然后自动 select 第二个(和更多)分段控件的答案,如果 selected 答案是 No
.
所以Question1
分段控制(是,否,N/A),如果No
是selected,则回答Question2
(和Q3、Q4 等)分段控制到 N/A
。
我可以让它单独在 Question1
上工作,即按 No
但在 Question1
上更改为 N/A
,但我希望它离开 Question1
作为 No
,然后将 Question2
等更改为 N/A
。
我尝试将 sender
更改为 Question2
,但这不起作用。
@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 {
[=10=].selectedSegmentIndex = 2
}
} else {
// do stuff
}
}
}
在 == 1
块中,您创建一个包含其他分段控件的数组并循环遍历,即 "for each control, set the selected segment index to 2."
旁注:使用
lowerCaseFirstChar
用于变量和函数名称。使用
UpperCaseFirstChar
用于类/结构/枚举/等