swift Swift中的通用分段控件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift Swift中的通用分段控件相关的知识,希望对你有一定的参考价值。

import UIKit

class SegmentedControl: UIControl {
    private let action = Selector("selectSegment:")

    @IBOutlet
    private var segments: [UIButton] = [] {
        didSet {
            segments.sortInPlace { $0.tag < $1.tag }
            subscribe(segments)
        }
    }

    var selectedSegmentIndex: Int = 0 {
        didSet { selectSegmentAtIndex(selectedSegmentIndex) }
    }

    override var enabled: Bool {
        didSet { segments.forEach { $0.enabled = enabled } }
    }

    private func subscribe(segments: [UIButton]) {
        segments.forEach {
            $0.addTarget(self, action: action, forControlEvents: .TouchDown)
        }
    }

    private dynamic func selectSegment(sender: UIButton) {
        if let index = segments.indexOf(sender) where index != selectedSegmentIndex {
            selectedSegmentIndex = index
            sendActionsForControlEvents(.ValueChanged)
        }
    }

    private func selectSegmentAtIndex(index: Int) {
        segments.forEach { $0.selected = false }
        if index != UISegmentedControlNoSegment {
            segments[index].selected = true
        }
    }
}

以上是关于swift Swift中的通用分段控件的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 的标头中使用分段控件更改 UICollectionView 的内容

如何在 Swift 的分段控件中调整 textLabel 的大小?

如何在 Swift 的工具栏顶部居中分段控件?

Swift 分段控制和 UITableView

Swift - 如何让分段控制锁定在屏幕顶部

以编程方式向 Swift 中的视图添加约束时出错