我在哪里打电话给子类? (可重选的UISegmentControl Swift 3)

时间:2016-10-11 21:34:29

标签: swift uisegmentedcontrol

我有一个UISegmentedControl的子类,在Cocoa Touch类中称为SegControl

class SegControl: UISegmentedControl {
override var = "test"
}

现在我的ViewController中有一个UISegmentControl我该怎么做才符合我的自定义类?

编辑: Swift 3的可重新选择的UISegmentControl的完整代码

class ReselectableSegmentedControl: UISegmentedControl {

    @IBInspectable var allowReselection: Bool = true
    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        let previousSelectedSegmentIndex = self.selectedSegmentIndex
        super.touchesEnded(touches, with: event)
        if allowReselection && previousSelectedSegmentIndex == self.selectedSegmentIndex {
            if let touch = touches.first {
                let touchLocation = touch.location(in: self)
                if bounds.contains(touchLocation) {
                    self.sendActions(for: .valueChanged)
                }
            }
        }

    }
}

UISegmentControl:

var savedSegment: Int = -1

    @IBAction func segmentChanged(_ sender: ReselectableSegmentedControl) {

        if (sender.selectedSegmentIndex == savedSegment) {
            sender.selectedSegmentIndex =  UISegmentedControlNoSegment
            savedSegment = UISegmentedControlNoSegment
        }
        else {
            savedSegment = sender.selectedSegmentIndex
        }

2 个答案:

答案 0 :(得分:2)

您的问题并不完全清楚,但首先您需要将UISegmentedControl的任何引用替换为SegControl。这包括更新代码中的任何引用以及更改任何storyboard或xib中对象的类名。

您还需要在子类中添加正确的init方法,以便创建它的实例。

当然,你需要添加任何使这个子类有用的附加代码。

答案 1 :(得分:0)

在布局构建器中添加默认的UISegmentControl

然后点击它并在身份检查员下的侧边菜单中 - &gt;类 写你的班级名称SegControl

enter image description here