链接两个(或更多)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 

用于类/结构/枚举/等