mirror of
https://github.com/ReactiveX/RxSwift.git
synced 2024-10-05 06:27:29 +03:00
Add rx_refreshing for UIRefreshControl
This commit is contained in:
parent
14efe368a7
commit
974bba5218
@ -11,6 +11,11 @@
|
||||
79E9DE8A1C3417FD009970AF /* DispatchQueueSchedulerQOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E9DE881C3417FD009970AF /* DispatchQueueSchedulerQOS.swift */; };
|
||||
79E9DE8B1C3417FD009970AF /* DispatchQueueSchedulerQOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E9DE881C3417FD009970AF /* DispatchQueueSchedulerQOS.swift */; };
|
||||
79E9DE8C1C3417FD009970AF /* DispatchQueueSchedulerQOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E9DE881C3417FD009970AF /* DispatchQueueSchedulerQOS.swift */; };
|
||||
7F600F3F1C5D0C6C00535B1D /* UIRefreshControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F600F3D1C5D0C0100535B1D /* UIRefreshControl+Rx.swift */; };
|
||||
7F600F401C5D0C6D00535B1D /* UIRefreshControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F600F3D1C5D0C0100535B1D /* UIRefreshControl+Rx.swift */; };
|
||||
7F600F411C5D0C6E00535B1D /* UIRefreshControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F600F3D1C5D0C0100535B1D /* UIRefreshControl+Rx.swift */; };
|
||||
7FE849471C5D0D6A00845C0E /* UIRefreshControl+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F600F421C5D0D2D00535B1D /* UIRefreshControl+RxTests.swift */; };
|
||||
7FE849481C5D0D6B00845C0E /* UIRefreshControl+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F600F421C5D0D2D00535B1D /* UIRefreshControl+RxTests.swift */; };
|
||||
842A5A2C1C357F92003568D5 /* NSTextStorage+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842A5A281C357F7D003568D5 /* NSTextStorage+Rx.swift */; };
|
||||
842A5A2D1C357F93003568D5 /* NSTextStorage+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842A5A281C357F7D003568D5 /* NSTextStorage+Rx.swift */; };
|
||||
842A5A2E1C357F94003568D5 /* NSTextStorage+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842A5A281C357F7D003568D5 /* NSTextStorage+Rx.swift */; };
|
||||
@ -1306,6 +1311,8 @@
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
79E9DE881C3417FD009970AF /* DispatchQueueSchedulerQOS.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DispatchQueueSchedulerQOS.swift; sourceTree = "<group>"; };
|
||||
7F600F3D1C5D0C0100535B1D /* UIRefreshControl+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIRefreshControl+Rx.swift"; sourceTree = "<group>"; };
|
||||
7F600F421C5D0D2D00535B1D /* UIRefreshControl+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIRefreshControl+RxTests.swift"; sourceTree = "<group>"; };
|
||||
842A5A281C357F7D003568D5 /* NSTextStorage+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSTextStorage+Rx.swift"; sourceTree = "<group>"; };
|
||||
8476A01F1C3D5D580040BA22 /* UIImagePickerController+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImagePickerController+RxTests.swift"; sourceTree = "<group>"; };
|
||||
8479BC441C3ACDA400FB8B54 /* RxImagePickerDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxImagePickerDelegateProxy.swift; sourceTree = "<group>"; };
|
||||
@ -2184,6 +2191,7 @@
|
||||
C83508EF1C38706D0027C24C /* RxTests-tvOS-Bridging-Header.h */,
|
||||
C83508F01C38706D0027C24C /* SentMessageTest.swift */,
|
||||
C83508F11C38706D0027C24C /* UIView+RxTests.swift */,
|
||||
7F600F421C5D0D2D00535B1D /* UIRefreshControl+RxTests.swift */,
|
||||
);
|
||||
path = RxCocoaTests;
|
||||
sourceTree = "<group>";
|
||||
@ -2305,6 +2313,7 @@
|
||||
C882540A1B8A752B00B02D69 /* UIGestureRecognizer+Rx.swift */,
|
||||
C882540B1B8A752B00B02D69 /* UIImageView+Rx.swift */,
|
||||
C882540C1B8A752B00B02D69 /* UILabel+Rx.swift */,
|
||||
7F600F3D1C5D0C0100535B1D /* UIRefreshControl+Rx.swift */,
|
||||
C882540D1B8A752B00B02D69 /* UIScrollView+Rx.swift */,
|
||||
C882540E1B8A752B00B02D69 /* UISearchBar+Rx.swift */,
|
||||
C882540F1B8A752B00B02D69 /* UISegmentedControl+Rx.swift */,
|
||||
@ -3208,6 +3217,7 @@
|
||||
84C225A31C33F00B008724EC /* RxTextStorageDelegateProxy.swift in Sources */,
|
||||
C8093EFB1B8A732E0088E94D /* RxCocoa.swift in Sources */,
|
||||
C88254231B8A752B00B02D69 /* RxTableViewDelegateProxy.swift in Sources */,
|
||||
7F600F411C5D0C6E00535B1D /* UIRefreshControl+Rx.swift in Sources */,
|
||||
F31F35B01BB4FED800961002 /* UIStepper+Rx.swift in Sources */,
|
||||
C882542D1B8A752B00B02D69 /* UIImageView+Rx.swift in Sources */,
|
||||
C80D33981B922FB00014629D /* ControlEvent.swift in Sources */,
|
||||
@ -3399,6 +3409,7 @@
|
||||
C835092F1C38706E0027C24C /* ControlPropertyTests.swift in Sources */,
|
||||
C835093C1C38706E0027C24C /* RxObjCRuntimeState.swift in Sources */,
|
||||
C83509491C38706E0027C24C /* Observable+Extensions.swift in Sources */,
|
||||
7FE849471C5D0D6A00845C0E /* UIRefreshControl+RxTests.swift in Sources */,
|
||||
C835094A1C38706E0027C24C /* TestVirtualScheduler.swift in Sources */,
|
||||
C83509501C38706E0027C24C /* DisposableTest.swift in Sources */,
|
||||
C835094E1C38706E0027C24C /* BehaviorSubjectTest.swift in Sources */,
|
||||
@ -3470,6 +3481,7 @@
|
||||
C84CB1721C3876B800EB63CC /* UIView+RxTests.swift in Sources */,
|
||||
C83509F81C38755D0027C24C /* HistoricalSchedulerTest.swift in Sources */,
|
||||
C83509F21C38755D0027C24C /* AnonymousObservable+Test.swift in Sources */,
|
||||
7FE849481C5D0D6B00845C0E /* UIRefreshControl+RxTests.swift in Sources */,
|
||||
C83509D31C3875390027C24C /* RXObjCRuntime+Testing.m in Sources */,
|
||||
C83509FD1C38755D0027C24C /* Observable+ConcurrencyTest.swift in Sources */,
|
||||
C8350A141C38756A0027C24C /* Observable+TimeTest.swift in Sources */,
|
||||
@ -4094,6 +4106,7 @@
|
||||
84C225A51C33F00B008724EC /* RxTextStorageDelegateProxy.swift in Sources */,
|
||||
C8F0C00F1BBBFBB9001B112F /* RxCocoa.swift in Sources */,
|
||||
C8F0C0101BBBFBB9001B112F /* RxTableViewDelegateProxy.swift in Sources */,
|
||||
7F600F3F1C5D0C6C00535B1D /* UIRefreshControl+Rx.swift in Sources */,
|
||||
C8F0C0111BBBFBB9001B112F /* UIStepper+Rx.swift in Sources */,
|
||||
C8F0C0121BBBFBB9001B112F /* UIImageView+Rx.swift in Sources */,
|
||||
C8F0C0131BBBFBB9001B112F /* ControlEvent.swift in Sources */,
|
||||
@ -4184,6 +4197,7 @@
|
||||
D203C5131BB9C53E00D02D00 /* UITextView+Rx.swift in Sources */,
|
||||
D203C4F41BB9C52400D02D00 /* RxTableViewReactiveArrayDataSource.swift in Sources */,
|
||||
D2138C951BB9BEDA00339B5C /* NSObject+Rx.swift in Sources */,
|
||||
7F600F401C5D0C6D00535B1D /* UIRefreshControl+Rx.swift in Sources */,
|
||||
D2138C881BB9BEBE00339B5C /* DelegateProxy.swift in Sources */,
|
||||
D203C5101BB9C53E00D02D00 /* UISwitch+Rx.swift in Sources */,
|
||||
D203C5121BB9C53E00D02D00 /* UITextField+Rx.swift in Sources */,
|
||||
|
43
RxCocoa/iOS/UIRefreshControl+Rx.swift
Normal file
43
RxCocoa/iOS/UIRefreshControl+Rx.swift
Normal file
@ -0,0 +1,43 @@
|
||||
//
|
||||
// UIRefreshControl+Rx.swift
|
||||
// RxCocoa
|
||||
//
|
||||
// Created by Yosuke Ishikawa on 1/31/16.
|
||||
// Copyright © 2016 Krunoslav Zaher. All rights reserved.
|
||||
//
|
||||
|
||||
#if os(iOS) || os(tvOS)
|
||||
import UIKit
|
||||
|
||||
#if !RX_NO_MODULE
|
||||
import RxSwift
|
||||
#endif
|
||||
|
||||
extension UIRefreshControl {
|
||||
|
||||
/**
|
||||
Bindable sink for `beginRefreshing()`, `endRefreshing()` methods.
|
||||
*/
|
||||
public var rx_refreshing: AnyObserver<Bool> {
|
||||
return AnyObserver {event in
|
||||
MainScheduler.ensureExecutingOnScheduler()
|
||||
|
||||
switch (event) {
|
||||
case .Next(let value):
|
||||
if value {
|
||||
self.beginRefreshing()
|
||||
} else {
|
||||
self.endRefreshing()
|
||||
}
|
||||
case .Error(let error):
|
||||
bindingErrorToInterface(error)
|
||||
break
|
||||
case .Completed:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
33
Tests/RxCocoaTests/UIRefreshControl+RxTests.swift
Normal file
33
Tests/RxCocoaTests/UIRefreshControl+RxTests.swift
Normal file
@ -0,0 +1,33 @@
|
||||
//
|
||||
// UIRefreshControl+RxTests.swift
|
||||
// RxTests
|
||||
//
|
||||
// Created by Yosuke Ishikawa on 1/31/16.
|
||||
// Copyright © 2016 Krunoslav Zaher. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
import RxSwift
|
||||
import RxCocoa
|
||||
import UIKit
|
||||
import XCTest
|
||||
|
||||
class UIRefreshControlTests : RxTest {
|
||||
}
|
||||
|
||||
extension UIRefreshControlTests {
|
||||
func testRefreshing_True() {
|
||||
let subject = UIRefreshControl()
|
||||
Observable.just(true).subscribe(subject.rx_refreshing).dispose()
|
||||
|
||||
XCTAssertTrue(subject.refreshing == true)
|
||||
}
|
||||
|
||||
func testRefreshing_False() {
|
||||
let subject = UIRefreshControl()
|
||||
Observable.just(false).subscribe(subject.rx_refreshing).dispose()
|
||||
|
||||
XCTAssertTrue(subject.refreshing == false)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user