Skip to content

Commit 1c04622

Browse files
pbenderskykzaher
authored andcommitted
Added reactive wrapper for UISegmentedControl's setEnabled(_:forSegmentAt:).
1 parent 8c1f1de commit 1c04622

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

RxCocoa/iOS/UISegmentedControl+Rx.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ extension Reactive where Base: UISegmentedControl {
3030
}
3131
)
3232
}
33+
34+
/// Reactive wrapper for `setEnabled(_:forSegmentAt:)`
35+
public func enabled(forSegmentAt segmentAt: Int) -> Binder<Bool> {
36+
return Binder(self.base) { (segmentedControl, segmentEnabled) -> () in
37+
segmentedControl.setEnabled(segmentEnabled, forSegmentAt: segmentAt)
38+
}
39+
}
3340

3441
}
3542

Tests/RxCocoaTests/UISegmentedControl+RxTests.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,12 @@ extension UISegmentedControlTests {
2525
let createView: () -> UISegmentedControl = { UISegmentedControl(items: ["a", "b", "c"]) }
2626
ensurePropertyDeallocated(createView, 1) { (view: UISegmentedControl) in view.rx.selectedSegmentIndex }
2727
}
28+
29+
func testSegmentedControl_SegmentDisabled() {
30+
let segmentedControl = UISegmentedControl(items: ["a", "b", "c"])
31+
32+
XCTAssertTrue(segmentedControl.isEnabledForSegment(at: 0))
33+
_ = Observable.just(false).subscribe(segmentedControl.rx.enabled(forSegmentAt: 0))
34+
XCTAssertFalse(segmentedControl.isEnabledForSegment(at: 0))
35+
}
2836
}

0 commit comments

Comments
 (0)