Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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 为什么addTarget不调用函数?_Ios_Swift_Addtarget_Circular Slider - Fatal编程技术网

Ios 为什么addTarget不调用函数?

Ios 为什么addTarget不调用函数?,ios,swift,addtarget,circular-slider,Ios,Swift,Addtarget,Circular Slider,我在我的项目中添加了MTR滑翔机吊舱。 我的viewController如下所示: class ViewController: UIViewController { @IBOutlet var slider: MTCircularSlider! @IBOutlet var sliderLabel: UILabel! let temperatureArray = ["7.5","8.0","8.5","9.0","9.5","10.0","10.5","11.0","

我在我的项目中添加了MTR滑翔机吊舱。 我的viewController如下所示:

class ViewController: UIViewController {

    @IBOutlet var slider: MTCircularSlider!

    @IBOutlet var sliderLabel: UILabel!

    let temperatureArray = ["7.5","8.0","8.5","9.0","9.5","10.0","10.5","11.0","11.5","12.0","12.5","13.0","13.5","14.0","14.5","15.0","15.5","16.0","16.5","17.0","17.5","18.0","18.5","19.0","19.5","20.0","20.5","21.0","21.5","22.0","22.5","23.0","23.5","24.0","24.5","25.0","25.5","26.0","26.5","27.0","27.5","28.0","28.5"]

    override func viewDidLoad() {
        super.viewDidLoad()
        self.slider.addTarget(self, action: #selector(valueChange), for: .valueChanged)

    }

    @objc func valueChange() {
        //Slider value change
        let value = Float(slider.value)
        let numberString = String(value)
        let numberComponent = numberString.components(separatedBy :".")
        let integerNumber = Int(numberComponent [0])!
        let fractionalString = numberComponent[1].prefix(1)

        var fractionalNumber:Int = Int(fractionalString)!

        if fractionalNumber >= 5 {
            fractionalNumber = 5
        }
        else {
            fractionalNumber = 0
        }

        let temperature = String(integerNumber) + "." + String(fractionalNumber)
        if temperature == "7.5" {
            sliderLabel.text = NSLocalizedString("min", comment: "")
        }
        else if temperature == "28.5" {
            sliderLabel.text = NSLocalizedString("max", comment: "")
        }
        else {
            sliderLabel.text = temperature + " °C"
        }

        if temperatureArray.contains(temperature) {
            let index = temperatureArray.firstIndex(of: temperature)

            print(index!)
        }
    }
}
我的UI如下所示:

class ViewController: UIViewController {

    @IBOutlet var slider: MTCircularSlider!

    @IBOutlet var sliderLabel: UILabel!

    let temperatureArray = ["7.5","8.0","8.5","9.0","9.5","10.0","10.5","11.0","11.5","12.0","12.5","13.0","13.5","14.0","14.5","15.0","15.5","16.0","16.5","17.0","17.5","18.0","18.5","19.0","19.5","20.0","20.5","21.0","21.5","22.0","22.5","23.0","23.5","24.0","24.5","25.0","25.5","26.0","26.5","27.0","27.5","28.0","28.5"]

    override func viewDidLoad() {
        super.viewDidLoad()
        self.slider.addTarget(self, action: #selector(valueChange), for: .valueChanged)

    }

    @objc func valueChange() {
        //Slider value change
        let value = Float(slider.value)
        let numberString = String(value)
        let numberComponent = numberString.components(separatedBy :".")
        let integerNumber = Int(numberComponent [0])!
        let fractionalString = numberComponent[1].prefix(1)

        var fractionalNumber:Int = Int(fractionalString)!

        if fractionalNumber >= 5 {
            fractionalNumber = 5
        }
        else {
            fractionalNumber = 0
        }

        let temperature = String(integerNumber) + "." + String(fractionalNumber)
        if temperature == "7.5" {
            sliderLabel.text = NSLocalizedString("min", comment: "")
        }
        else if temperature == "28.5" {
            sliderLabel.text = NSLocalizedString("max", comment: "")
        }
        else {
            sliderLabel.text = temperature + " °C"
        }

        if temperatureArray.contains(temperature) {
            let index = temperatureArray.firstIndex(of: temperature)

            print(index!)
        }
    }
}

我的rootView如下所示:

class ViewController: UIViewController {

    @IBOutlet var slider: MTCircularSlider!

    @IBOutlet var sliderLabel: UILabel!

    let temperatureArray = ["7.5","8.0","8.5","9.0","9.5","10.0","10.5","11.0","11.5","12.0","12.5","13.0","13.5","14.0","14.5","15.0","15.5","16.0","16.5","17.0","17.5","18.0","18.5","19.0","19.5","20.0","20.5","21.0","21.5","22.0","22.5","23.0","23.5","24.0","24.5","25.0","25.5","26.0","26.5","27.0","27.5","28.0","28.5"]

    override func viewDidLoad() {
        super.viewDidLoad()
        self.slider.addTarget(self, action: #selector(valueChange), for: .valueChanged)

    }

    @objc func valueChange() {
        //Slider value change
        let value = Float(slider.value)
        let numberString = String(value)
        let numberComponent = numberString.components(separatedBy :".")
        let integerNumber = Int(numberComponent [0])!
        let fractionalString = numberComponent[1].prefix(1)

        var fractionalNumber:Int = Int(fractionalString)!

        if fractionalNumber >= 5 {
            fractionalNumber = 5
        }
        else {
            fractionalNumber = 0
        }

        let temperature = String(integerNumber) + "." + String(fractionalNumber)
        if temperature == "7.5" {
            sliderLabel.text = NSLocalizedString("min", comment: "")
        }
        else if temperature == "28.5" {
            sliderLabel.text = NSLocalizedString("max", comment: "")
        }
        else {
            sliderLabel.text = temperature + " °C"
        }

        if temperatureArray.contains(temperature) {
            let index = temperatureArray.firstIndex(of: temperature)

            print(index!)
        }
    }
}
我正在使用以下代码在选项卡栏上加载此viewController:

class dashboardViewController: UIViewController {

    func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
switch item.tag {
        case 0:
            subTitleLabel.text = "Temperature"
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let viewController = storyboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController                
            self.view.insertSubview(viewController.view!, belowSubview: self.dashboardTabBar)
}
}
当我加载viewController时,通常意味着按下此视图时,它工作正常。但是,当我单击add-on选项卡时,我的函数valueChange()不会被调用。请给我任何解决方案。

如参考文献中所述,ValueChange方法有一个参数。可能是发送者的论点。请参阅下面的代码

self.slider?.addTarget(self, action: Selector("valueChange:"), forControlEvents: .ValueChanged)
但您的代码似乎缺少这一点。你能试试这样的吗

@objc
func valueChange(sender: AnyObject) {

}
请告诉我这有什么帮助。

试试这个

slider.addTarget(self, action: #selector(ViewController.handle(_:)), for: . valueChanged)

    // Handle Action

        @objc func handle(_ sender: AnyObject) {


    }

您确定IBOutlet在情节提要中已连接,并且在viewDidLoad中self.slider不为null吗?请在调试器中检查。我更新了我的问题…我发现了问题,但没有找到任何解决方案。是否有其他视图?检查是否已启用用户交互以控制其有线尝试其他事件而不是值更改我更新了我的问题…我发现了问题,但未找到任何解决方案。MTCircularSlider的根类是什么?添加更多信息,如rootviewcontroller生成位置代码和当前滑块viewcontroller代码您正在将一个viewcontroller添加到另一个viewcontroller中,因此它不会调用,因为该方法位于其他一些控制器中……如果您希望调用该方法,则需要使用容器viewcontroller。您在哪里创建UI?是故事板还是xib?请提供详细信息。这将对我们有所帮助。如何初始化和显示视图控制器的实例?它是通过代码实现的还是仅仅依赖于情节提要?视图控制器如何在设备(或模拟器)上显示其视图?。你是自己实例化视图控制器还是通过分段实例化视图控制器?让我们来看看。我更新了我的问题…我发现了问题,但没有找到任何解决方案。