【发布时间】:2017-07-12 22:55:27
【问题描述】:
我在情节提要中创建了一个分段控件,如下所示:
然后我为控件的值更改时创建了一个 IBAction:
@IBAction func segmentValChanged(_ sender: UISegmentedControl) {
print("touched")
if (sender.selectedSegmentIndex == 0) {
sender.selectedSegmentIndex = 1;
}
else{
sender.selectedSegmentIndex = 0;
}
}
唯一的问题是这个函数永远不会被调用! 当我点击 Jokes (Beta) 按钮时,什么也没有发生。
但是,当我为控件创建一个 IBOutlet 并尝试更改我的 viewDidLoad() 中的选定段时,它起作用了:
segmentedController.selectedSegmentIndex = 1
我知道我可能错过了一些明显的东西,因为我以前从未使用过分段控件。 如果有人能指出这是什么,非常感谢。 干杯!
import UIKit
import Alamofire
class ViewController: UIViewController {
var currentImage: CurrentImage!
var parameters: Parameters!
@IBOutlet weak var segmentedController: UISegmentedControl!
@IBAction func segmentValChanged(_ sender: UISegmentedControl) {
print("touched")
if (sender.selectedSegmentIndex == 0) { // switch to 1
sender.selectedSegmentIndex = 1;
}
else{
sender.selectedSegmentIndex = 0;
}
}
override func viewDidLoad() {
super.viewDidLoad()
segmentedController.selectedSegmentIndex = 1
self.segmentedController.addTarget(self, action: #selector(segmentValChanged(_:)), for: .valueChanged)
}
}
【问题讨论】:
-
您是否将 IB 中的这个函数绑定到
.valueChanged? -
是的,我做到了
-
cosole 正在打印“touched”消息?
-
澄清一下:触摸的消息没有被打印出来
-
尝试以编程方式添加操作,尝试在您的 viewDidLoad
self.segmentedControl.addTarget(self, action: #selector(change), for: .valueChanged)
标签: ios swift uisegmentedcontrol