Merge pull request #516 from sambae/uiprogressview

Adds `rx_progress` to `UIProgressView`
This commit is contained in:
Krunoslav Zaher 2016-02-28 23:47:09 +01:00
commit 8021db9958
3 changed files with 53 additions and 0 deletions

View File

@ -35,6 +35,8 @@
9BA1CBFD1C0F84A10044B50A /* UIActivityIndicatorView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BA1CBD11C0F7C0A0044B50A /* UIActivityIndicatorView+Rx.swift */; };
9BA1CBFE1C0F84C40044B50A /* UIActivityIndicatorView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BA1CBD11C0F7C0A0044B50A /* UIActivityIndicatorView+Rx.swift */; };
9D71C4D21BF08191006E8F59 /* UIButton+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254061B8A752B00B02D69 /* UIButton+Rx.swift */; };
AAE623761C82475700FC7801 /* UIProgressView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAE623751C82475700FC7801 /* UIProgressView+Rx.swift */; };
AAE623771C82475700FC7801 /* UIProgressView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAE623751C82475700FC7801 /* UIProgressView+Rx.swift */; };
B1B7C3BD1BDD39DB0076934E /* TakeLast.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B7C3BC1BDD39DB0076934E /* TakeLast.swift */; };
B1B7C3BE1BDD39DB0076934E /* TakeLast.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B7C3BC1BDD39DB0076934E /* TakeLast.swift */; };
B1B7C3BF1BDD39DB0076934E /* TakeLast.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B7C3BC1BDD39DB0076934E /* TakeLast.swift */; };
@ -1325,6 +1327,7 @@
84C225A21C33F00B008724EC /* RxTextStorageDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTextStorageDelegateProxy.swift; sourceTree = "<group>"; };
9BA1CBD11C0F7C0A0044B50A /* UIActivityIndicatorView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIActivityIndicatorView+Rx.swift"; sourceTree = "<group>"; };
A111CE961B91C97C00D0DCEE /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
AAE623751C82475700FC7801 /* UIProgressView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIProgressView+Rx.swift"; sourceTree = "<group>"; };
B1B7C3BC1BDD39DB0076934E /* TakeLast.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TakeLast.swift; sourceTree = "<group>"; };
B1D8998E1BF653410027B05C /* Timeout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Timeout.swift; sourceTree = "<group>"; };
C807F3611C2ACED300017910 /* TestSchedulerVirtualTimeConverter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestSchedulerVirtualTimeConverter.swift; sourceTree = "<group>"; };
@ -2322,6 +2325,7 @@
C882540A1B8A752B00B02D69 /* UIGestureRecognizer+Rx.swift */,
C882540B1B8A752B00B02D69 /* UIImageView+Rx.swift */,
C882540C1B8A752B00B02D69 /* UILabel+Rx.swift */,
AAE623751C82475700FC7801 /* UIProgressView+Rx.swift */,
7F600F3D1C5D0C0100535B1D /* UIRefreshControl+Rx.swift */,
C882540D1B8A752B00B02D69 /* UIScrollView+Rx.swift */,
C882540E1B8A752B00B02D69 /* UISearchBar+Rx.swift */,
@ -3251,6 +3255,7 @@
C80D338F1B91EF9E0014629D /* Observable+Bind.swift in Sources */,
C88254311B8A752B00B02D69 /* UISegmentedControl+Rx.swift in Sources */,
C8093EED1B8A732E0088E94D /* KVOObservable.swift in Sources */,
AAE623761C82475700FC7801 /* UIProgressView+Rx.swift in Sources */,
C8DB968D1BF7595D0084BD53 /* KVORepresentable+Swift.swift in Sources */,
C80DDEB11BCE8CA3006A1832 /* Driver+Operators+arity.swift in Sources */,
C88254281B8A752B00B02D69 /* UIButton+Rx.swift in Sources */,
@ -4248,6 +4253,7 @@
D203C50D1BB9C53E00D02D00 /* UISegmentedControl+Rx.swift in Sources */,
C8C4B4C41C17727000828BD5 /* MessageSentObserver.swift in Sources */,
D2138C861BB9BEBE00339B5C /* Observable+Bind.swift in Sources */,
AAE623771C82475700FC7801 /* UIProgressView+Rx.swift in Sources */,
D203C50A1BB9C53E00D02D00 /* UILabel+Rx.swift in Sources */,
D203C4F51BB9C52900D02D00 /* ItemEvents.swift in Sources */,
C8BCD3F61C14B6D1005F1280 /* NSLayoutConstraint+Rx.swift in Sources */,

View File

@ -0,0 +1,30 @@
//
// UIProgressView+Rx.swift
// Rx
//
// Created by Samuel Bae on 2/27/16.
// Copyright © 2016 Krunoslav Zaher. All rights reserved.
//
#if os(iOS) || os(tvOS)
import Foundation
#if !RX_NO_MODULE
import RxSwift
#endif
import UIKit
extension UIProgressView {
/**
Bindable sink for `progress` property
*/
public var rx_progress: AnyObserver<Float> {
return UIBindingObserver(UIElement: self) { progressView, progress in
progressView.progress = progress
}.asObserver()
}
}
#endif

View File

@ -287,6 +287,23 @@ extension ControlTests {
}
}
// UIProgressView
extension ControlTests {
func testProgressView_HasWeakReference() {
ensureControlObserverHasWeakReference(UIProgressView(), { (progressView: UIProgressView) -> AnyObserver<Float> in progressView.rx_progress }, { Variable<Float>(0.0).asObservable() })
}
func testProgressView_NextElementsSetsValue() {
let subject = UIProgressView()
let progressSequence = Variable<Float>(0.0)
let disposable = progressSequence.asObservable().bindTo(subject.rx_progress)
defer { disposable.dispose() }
progressSequence.value = 1.0
XCTAssert(subject.progress == progressSequence.value, "Expected progress to have been set")
}
}
// UITableView
extension ControlTests {
func testTableView_DelegateEventCompletesOnDealloc() {