Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS分段控制:Can';不要更改所选的段_Ios_Swift_Uisegmentedcontrol - Fatal编程技术网

IOS分段控制:Can';不要更改所选的段

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.

我在情节提要中创建了一个分段控件,如下所示:

然后我为控件的值更改创建了一个iAction:

@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

  • 向分段控件的父控件添加边框。如果控件在边界外绘制,则转到这里<代码>分段控件.superview?.layer.borderWidth=1

  • 通过扩展父视图的大小来解决此问题,以便在其中绘制控件



    另一方面,您的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)
        }
    }