在Swift中访问UISegementedControl

Kok*_*nee 10 uisegmentedcontrol ios swift

我一直在玩UISegmentedControl,并希望根据需要进行管理.我在故事板上创建了它,连接了插座和动作.它可视化很好,并且动作indexchanged上的回调有效.我想在可视化之前做一些其他的管理,所以我坚持如何正确访问故事板中的mysegmentedControl我设置.看起来像一个愚蠢的问题,但我找不到我可以与当前相关的UISegmentedControl的Swift示例.

class ViewController: UIViewController, MKMapViewDelegate {
    ...
    //playing around with a Segmented Control
    @IBOutlet var mysegmentedControl : UISegmentedControl

    // Any time the button is clicked in the Segmented Control the index changes so we catch it to do something.

    @IBAction func indexChanged(sender : UISegmentedControl) {
        // This all works fine and it prints out the value of 3 on any click 
        println("# of Segments = \(sender.numberOfSegments)")

        switch sender.selectedSegmentIndex {
        case 0:
            println("first segement clicked")
        case 1:
            println("second segment clicked")
        case 2:
            println("third segemnet clicked")
        default:
            break;
        }  //Switch
    } // indexChanged for the Segmented Control

    override func viewDidLoad() {
        super.viewDidLoad()

         //  1.  How do I get proper access to the mysegmentedControl that was created in the storyboard and is already displayed.
         //      The indexChanged function gets called fine on the display via sender getting passed to it.
         //      I equate this to getting the pointer to it in C so I leverage it elsewhere
         //  2.  Guessing I don't need to init a new UISegmentedControl or do I?

         // This compiles but crashes on run with: fatal error: Can't unwrap 
         println("# of Segments = \(mysegmentedControl.numberOfSegments)")

    } // viewDidLoad    

} // ViewController
Run Code Online (Sandbox Code Playgroud)

Avi*_*Avi 14

这是我用过的,对我来说很好 -

@IBOutlet var mysegmentedControl : UISegmentedControl?

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func indexChanged(sender : UISegmentedControl) {
    // This all works fine and it prints out the value of 3 on any click
    println("# of Segments = \(sender.numberOfSegments)")

    switch sender.selectedSegmentIndex {
    case 0:
        println("first segement clicked")
    case 1:
        println("second segment clicked")
    case 2:
        println("third segemnet clicked")
    default:
        break;
    }  //Switch
} // indexChanged for the Segmented Control

override func viewDidLoad() {
    super.viewDidLoad()
    println("# of Segments = \(mysegmentedControl?.numberOfSegments)")

}
Run Code Online (Sandbox Code Playgroud)