

ある segmented control をタップしたとき、それに応じて他の segmented control
も切り替えたい（表示だけ）のですが、可能でしょうか？ "self.segmentedControlの名前.selectedSegmentIndex = 1"
等を試しましたがダメでした。よろしくお願いいたします。


CC BY-SA 3.0
2016-03-09T08:38:22.113
22950
2017-10-27T02:20:09.653
14709
question
swift swift2
UISegmentedControl (Swift2) で、他の segmented control も連動させたい


コメントでいただいた内容も踏まえて結論めいた書き方をさせていただくと、

  * `UISegmentedControl`のプロパティ`selectedSegmentedIndex`に整数値を代入する、という方向性は間違っていない。
  * `Value of type ‘(UISegmentedControl)’ -> () has no member ‘selectedSegmentedIndex’`というエラーが出るのは、`self.xxx`の宣言の仕方が間違っている可能性が高い。

参考までに動作確認のために作成したViewControllerの全コードを載せておきます。

[code]

    import UIKit
    
    class ViewController: UIViewController {
    
        @IBOutlet weak var segementedControl: UISegmentedControl!
    
        @IBAction func buttonPressed(sender: UIButton) {
            let index = sender.tag
            self.segementedControl.selectedSegmentIndex = index
        }
    
        @IBAction func resetPressed(_: AnyObject) {
            self.segementedControl.selectedSegmentIndex = -1
        }
    }
    
[/code]

InterfaceBuilderでUISegmentedControl(segmentを3つにしました)とUIButtonを4つ(その内3つはtagの値を0,
1, 2としてあり、残り1つがreset用)配置し、各`@IBOutlet`,
`@IBAction`に接続してあります。これだけのコードで、UISegmentedControlを直接操作せずにボタンを押すだけで、UISegmentedControlが操作できるのを確認しました。

「これで成功するはずだ」と信じてやりなおしてみると、今まで気づかなかったミスに簡単に気がつくこともありますので、ご自分で解決できるように再度見直していただいてもいいでしょうし、よくわからなければ、問題のエラーを再現できるぎりぎりまで余分なコードを削ぎ落とした上で、問題の全コードを質問に追記していただければと思います。(ご自身の質問は編集できるはずです。)


CC BY-SA 3.0
2016-03-11T11:09:47.707
23027
2016-03-11T11:09:47.707
13972
22950
answer