繁体   English   中英

使用swift以编程方式填充UISegmentedControl

[英]Fill programmatically UISegmentedControl using swift

是否可以使用swift以编程方式填充UISegmentedControl的值?

let segmentedControl = UISegmentedControl()
segmentedControl.insertSegment(withTitle: "Title", at: 0, animated: true)
segmentedControl.setTitle("Another Title", forSegmentAt: 0)

如果我没有误会,您的意思是您想要以编程方式将段添加到“UISegmentedControl”组件,而不使用Interface Builder。

对的,这是可能的:

// Assuming that it is an "IBOutlet", you can do this in your "ViewController":
class ViewController: UIViewController {

    @IBOutlet weak var segmentedControl: UISegmentedControl!

    override func viewDidLoad() {
        super.viewDidLoad()

        // remove all current segments to make sure it is empty:
        segmentedControl.removeAllSegments()

        // adding your segments, using the "for" loop is just for demonstration:
        for index in 0...3 {
           segmentedControl.insertSegmentWithTitle("Segment \(index + 1)", atIndex: index, animated: false)
        }

        // you can also remove a segment like this:
        // this removes the second segment "Segment 2"
        segmentedControl.removeSegmentAtIndex(1, animated: false)
    }

    // and this is how you can access the changing of its value (make sure that event is "Value Changed")
    @IBAction func segmentControlValueChanged(sender: UISegmentedControl) {
        print("index of selected segment is: \(sender.selectedSegmentIndex)")
    }
}

我使用@ RyuX51的解决方案解决了我的问题,现在我的代码是:

class MyCustomViewController: UIViewController{

    @IBOutlet weak var ServicesSC: UISegmentedControl!

    override func viewDidLoad() {
        super.viewDidLoad()

        ServicesSC.removeAllSegments()


        ServicesSC.insertSegment(withTitle: "Title", at: 0, animated: true)
        ServicesSC.setTitle("Another Title", forSegmentAt: 0)

    }


}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM