使用swift编程填充UISegmentedControl



是否可以使用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)
    }

}

相关内容

  • 没有找到相关文章

最新更新