使用 UISegmentedControl 发送的无法识别的选择器

Posted

技术标签:

【中文标题】使用 UISegmentedControl 发送的无法识别的选择器【英文标题】:Unrecognized selector sent using UISegmentedControl 【发布时间】:2017-12-15 16:38:43 【问题描述】:

我想将UISegmentedControl 添加到视图控制器,这是相应的代码:

import UIKit

class QuantityNoImageViewController: UIViewController 
    var food: Food!

    @IBOutlet weak var foodName: UILabel!
    @IBOutlet weak var message1: UILabel!
    @IBOutlet weak var message2: UILabel!
    @IBOutlet weak var message3: UILabel!
    @IBOutlet weak var segmentControl: UISegmentedControl!

    @IBAction func segmentControlPressed(_ sender: UISegmentedControl) 
      switch segmentControl.selectedSegmentIndex 
      case 0: print("one");
      case 1: print("two");
      case 2: print("three")
      default: break;
      
    

@IBOutlet segmentControl@IBAction segmentControlPressed 已正确设置。

当我运行应用程序时,一切都很顺利,直到我按下一个产生的片段:

2017-12-15 17:22:11.840952+0100 Healthier[3835:248257]-[Healthier.QuantityNoImageViewController segmentedControl1:]:无法识别的选择器发送到实例 0x7fc52e03ae00 2017-12-15 17:22:11.863471+0100 Healthier[3835:248257] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[Healthier.QuantityNoImageViewController segmentedControl1:]:无法识别的选择器发送到实例 0x7fc52e03ae00” *** 首先抛出调用堆栈:

我只是找不到任何指针来帮助我解决这个看似简单的错误。你能帮我一些忙吗?

【问题讨论】:

猜猜看?你之前已经声明过func segmentedControl1:(_ sender: UISegmentedControl) 之类的东西,不是吗?检查您的情节提要与它连接的项目,然后将其删除。 segmentedControl1segmentControlPressed 不同。 您的分段控件是如何从界面生成器连接起来的?它的动作是如何联系起来的? 所以您在segmentControlPressed 中放置了一个断点并点击它?所以错误引用了segementedControl1,但您已经显示了 no 代码是什么?当您显示不完整的代码时,很难提供帮助! 【参考方案1】:

您可能已通过此操作连接了多个连接(确切地说,您已从其他屏幕复制了此段控件,并且其先前的连接仍未断开)

重置/删除与该段的所有 IBAction 连接并重新连接。

Storyboard/XIB >> View Controller >> Connection Inspector >> Reset all IBActions for segment control

【讨论】:

非常感谢,我没有借口,我很感激,希望在我的经验增长时能够提供帮助!

以上是关于使用 UISegmentedControl 发送的无法识别的选择器的主要内容,如果未能解决你的问题,请参考以下文章

UISegmentedControl 的使用

使用 UISegmentedControl 作为按钮

UISegmentedControl 自定义/扩展

ios UISegmentedControl的使用简介

UISegmentedControl的具体使用

带有 UISegmentedControl 的 UIStackView