mirror of
https://github.com/ReactiveX/RxSwift.git
synced 2024-10-05 06:27:29 +03:00
55 lines
1.7 KiB
Swift
55 lines
1.7 KiB
Swift
//
|
|
// UISegmentedControl+Rx.swift
|
|
// RxCocoa
|
|
//
|
|
// Created by Carlos García on 8/7/15.
|
|
// Copyright © 2015 Krunoslav Zaher. All rights reserved.
|
|
//
|
|
|
|
#if os(iOS) || os(tvOS)
|
|
|
|
import UIKit
|
|
import RxSwift
|
|
|
|
extension Reactive where Base: UISegmentedControl {
|
|
/// Reactive wrapper for `selectedSegmentIndex` property.
|
|
public var selectedSegmentIndex: ControlProperty<Int> {
|
|
return value
|
|
}
|
|
|
|
/// Reactive wrapper for `selectedSegmentIndex` property.
|
|
public var value: ControlProperty<Int> {
|
|
return base.rx.controlPropertyWithDefaultEvents(
|
|
getter: { segmentedControl in
|
|
segmentedControl.selectedSegmentIndex
|
|
}, setter: { segmentedControl, value in
|
|
segmentedControl.selectedSegmentIndex = value
|
|
}
|
|
)
|
|
}
|
|
|
|
/// Reactive wrapper for `setEnabled(_:forSegmentAt:)`
|
|
public func enabledForSegment(at index: Int) -> Binder<Bool> {
|
|
return Binder(self.base) { segmentedControl, segmentEnabled -> Void in
|
|
segmentedControl.setEnabled(segmentEnabled, forSegmentAt: index)
|
|
}
|
|
}
|
|
|
|
/// Reactive wrapper for `setTitle(_:forSegmentAt:)`
|
|
public func titleForSegment(at index: Int) -> Binder<String?> {
|
|
return Binder(self.base) { segmentedControl, title -> Void in
|
|
segmentedControl.setTitle(title, forSegmentAt: index)
|
|
}
|
|
}
|
|
|
|
/// Reactive wrapper for `setImage(_:forSegmentAt:)`
|
|
public func imageForSegment(at index: Int) -> Binder<UIImage?> {
|
|
return Binder(self.base) { segmentedControl, image -> Void in
|
|
segmentedControl.setImage(image, forSegmentAt: index)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|