IOS分段控制:Can';不要更改所选的段
我在情节提要中创建了一个分段控件,如下所示: 然后我为控件的值更改创建了一个iAction:IOS分段控制:Can';不要更改所选的段,ios,swift,uisegmentedcontrol,Ios,Swift,Uisegmentedcontrol,我在情节提要中创建了一个分段控件,如下所示: 然后我为控件的值更改创建了一个iAction: @IBAction func segmentValChanged(_ sender: UISegmentedControl) { print("touched") if (sender.selectedSegmentIndex == 0) { sender.selectedSegmentIndex = 1; } else{ sender.
@IBAction func segmentValChanged(_ sender: UISegmentedControl) {
print("touched")
if (sender.selectedSegmentIndex == 0) {
sender.selectedSegmentIndex = 1;
}
else{
sender.selectedSegmentIndex = 0;
}
}
唯一的问题是这个函数永远不会被调用!
当我点击笑话(测试版)按钮时,什么也没发生
但是,当我为控件创建IBOutlet并尝试在我的viewdiload()
中更改所选的段时,它成功了:
segmentedController.selectedSegmentIndex = 1
我知道我可能错过了一些明显的东西,因为我以前从未使用过分段控件。
如果有人能指出这是什么,非常感谢。
干杯
这就是我右键单击视图时的样子:
每当我看到这一点,几乎总是同一个问题。。。如果分段控件是在其父视图之外绘制的,则它不会响应轻敲。这很可能是您遇到的问题。(这也可能发生在UI按钮上。) 测试这是否是问题的方法:
clipstobunds
设置为true。如果控件不再显示在屏幕上,则它将在其父视图之外绘制<代码>分段控件.superview?.clipstobunds=true另一方面,您的IBAction不正确。调用值更改操作时,分段控件将已更改其值,并且新分段将高亮显示。你不必手动操作。这是另一个指示器,表明您的控件未在其父视图的边界内绘制。是否将IB中的此函数绑定到
。值已更改
?是的,我这样做了cosole正在打印“触摸”消息?为了澄清:触摸消息未打印请通过编程添加操作,在您的视图中尝试加载self.segmentedControl.addTarget(self,action:#选择器(更改),for:.valueChanged)非常感谢您,先生。这个答案非常有效。我刚刚遇到了同样的问题。我添加了Daniel T.建议的两行,但它仍然没有响应..另一种可能是superView层次结构中的一个视图的isUserInteractionEnabled
设置为false。
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)
}
}