“-[UIBarButtonItem selectedSegmentIndex]:发送到实例的无法识别的选择器”用于顶部 UIBar 中的分段控件

"-[UIBarButtonItem selectedSegmentIndex]: unrecognized selector sent to instance" for segmented control in top UIBar

我正在使用 Swift 4. 我在顶部 UINavigationBar 的右侧有一个分段控件,如下所示:

当我创建一个从 Storyboard 到我的代码的出口时,默认情况下它希望它是一个 UIBarButtonItem,但是对于我的操作我无法访问 selectedSegmentIndex 而不将它设为 [=15] =].

所以我的插座是这样的:

@IBOutlet weak var saveAsControl: UISegmentedControl!

我的操作,作为测试,是这样的:

@IBAction func saveAsTypeAction(_ sender: Any) {

    print("tapped")

    switch saveAsControl.selectedSegmentIndex
    {
    case 0:
        print("video selected")
    case 1:
        print("gif selected")
    default:
        break;
    }

}

如果我点击分段控件,调试器会崩溃并显示消息:

-[UIBarButtonItem selectedSegmentIndex]: unrecognized selector sent to instance

所以我不知道如何让分段控制工作。好像跟UINavigationBar有关系,但不知道为什么会出问题。

您的插座接线可能有误。这是正确的设置:

请注意,出口和动作都连接到分段控件而不是条形按钮本身。