当您的 SegmentedControl 的索引更改时如何调用函数
How to call a function when the index for you SegmentedControl is changed
我试图在我的 UISegmentedControl 更改索引时调用函数“indexChanged”。我正在使用 class 中的 .addAction 函数。我收到此警告:“没有使用 Objective-C 选择器 'indexChanged:' 声明的方法”,但即使我在“indexChanged”函数旁边添加 @objc 标记,我也会收到更多错误。
当 SegementedControl 索引发生变化时,是否有其他方法可以调用函数?部分代码如下:
let items = ["Donors", "Cars"]
let controller = UISegmentedControl(items: items)
controller.selectedSegmentIndex = 0
let frame = UIScreen.main.bounds
controller.frame = CGRect(x: frame.maxX - 135, y: frame.minY + 10,
width: frame.width - 250, height: frame.height*0.03)
controller.addTarget(self, action: "indexChanged:", for: .valueChanged)
map.addSubview(customSC) // map is a UIKit Map
func indexChanged(_ sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 0 {
print("Select 0")
} else if sender.selectedSegmentIndex == 1 {
print("Select 1")
}
}
非常感谢!
你非常接近!你没有解释你得到的额外错误,但我通过更改两行成功编译了你的代码:
controller.addTarget(self, action: "indexChanged:", for: .valueChanged)
变成:
controller.addTarget(self, action: #selector(indexChanged(_:)) , for: .valueChanged)
和
func indexChanged(_ sender: UISegmentedControl) {
需要@objc 才能工作:
@objc
func indexChanged(_ sender: UISegmentedControl) {
我试图在我的 UISegmentedControl 更改索引时调用函数“indexChanged”。我正在使用 class 中的 .addAction 函数。我收到此警告:“没有使用 Objective-C 选择器 'indexChanged:' 声明的方法”,但即使我在“indexChanged”函数旁边添加 @objc 标记,我也会收到更多错误。
当 SegementedControl 索引发生变化时,是否有其他方法可以调用函数?部分代码如下:
let items = ["Donors", "Cars"]
let controller = UISegmentedControl(items: items)
controller.selectedSegmentIndex = 0
let frame = UIScreen.main.bounds
controller.frame = CGRect(x: frame.maxX - 135, y: frame.minY + 10,
width: frame.width - 250, height: frame.height*0.03)
controller.addTarget(self, action: "indexChanged:", for: .valueChanged)
map.addSubview(customSC) // map is a UIKit Map
func indexChanged(_ sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 0 {
print("Select 0")
} else if sender.selectedSegmentIndex == 1 {
print("Select 1")
}
}
非常感谢!
你非常接近!你没有解释你得到的额外错误,但我通过更改两行成功编译了你的代码:
controller.addTarget(self, action: "indexChanged:", for: .valueChanged)
变成:
controller.addTarget(self, action: #selector(indexChanged(_:)) , for: .valueChanged)
和
func indexChanged(_ sender: UISegmentedControl) {
需要@objc 才能工作:
@objc
func indexChanged(_ sender: UISegmentedControl) {