UISegmentedControl selectedIndex始终显示0

问题描述 投票:1回答:1

刚开始学习iOS。我以编程方式创建了一个UISegmentedControl并用两个项初始化它。我似乎不明白为什么所选索引总是显示0。

这是我的代码:

let items = ["Watchlist", "Favorites"]

var segmentedControl: UISegmentedControl {
        let sc = UISegmentedControl(items: items)
        sc.selectedSegmentIndex = 0
        sc.addTarget(self, action: #selector(handleSegmentChange), for: .valueChanged)
        return sc
    }    


// Action for segment change
@objc fileprivate func handleSegmentChange() {
        print(segmentedControl.selectedSegmentIndex)
    }

swift uisegmentedcontrol
1个回答
1
投票

分段控件定义为computed property,它创建一个新的UISegmentedControl实例,每次访问时selectedSegmentIndex值设置为0。请尝试使用属性初始化闭包:

let segmentedControl: UISegmentedControl = {
    let sc = UISegmentedControl(items: items)
    sc.selectedSegmentIndex = 0
    sc.addTarget(self, action: #selector(handleSegmentChange), for: .valueChanged)
    return sc
}()
© www.soinside.com 2019 - 2024. All rights reserved.