Created
May 28, 2020 11:38
-
-
Save unnnyong/9cf91f1849b5ab9d7facd4757359ec4f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// ViewController.swift | |
// RxSwiftExample | |
// | |
// Created by Eunyeong Kim on 2020/05/27. | |
// Copyright © 2020 Eunyeong Kim. All rights reserved. | |
// | |
import UIKit | |
import RxSwift | |
import RxCocoa | |
struct PhotoWriter { | |
static func save(_ image: UIImage) -> Single<String> { | |
Single.create { observer in | |
return Disposables.create() | |
} | |
} | |
} | |
final class PhotosViewController: UIViewController { | |
private let subject = PublishSubject<UIImage>() | |
var selectedPhotos: Observable<UIImage> { | |
return subject.asObservable() | |
} | |
override func viewWillDisappear(_ animated: Bool) { | |
super.viewWillDisappear(animated) | |
subject.onCompleted() | |
} | |
private func selectImage(_ image: UIImage) { | |
subject.onNext(image) | |
} | |
} | |
final class ViewController: UIViewController { | |
private let disposeBag = DisposeBag() | |
private let images = BehaviorRelay<[UIImage]>(value: []) | |
private let previewImage = UIImage() | |
private let photosVC = PhotosViewController() | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
photosVC.selectedPhotos | |
.subscribe( | |
onNext: { [weak self] image in | |
self?.images.accept(self?.images.value ?? [] + [image]) | |
} | |
) | |
.disposed(by: disposeBag) | |
images.subscribe { images in | |
print(images.element?.count ?? "") | |
}.disposed(by: disposeBag) | |
} | |
} | |
private extension ViewController { | |
func addImage(newImage: UIImage) { | |
images.accept(images.value + [newImage]) | |
} | |
func clearImages() { | |
images.accept([]) | |
} | |
func showMessage() { | |
didTapCloseButton() | |
.subscribe( | |
onCompleted: { [weak self] in | |
self?.saveImage() | |
// self?.previewImage = nil | |
// closeVC() | |
}, | |
onError: { error in | |
print(error) | |
} | |
) | |
.disposed(by: disposeBag) | |
} | |
func didTapCloseButton() -> Completable { | |
Completable.create { completable in | |
return Disposables.create() | |
} | |
} | |
func saveImage() { | |
PhotoWriter.save(previewImage) | |
.subscribe( | |
onSuccess: { id in | |
print("Saved Photo ID is \(id)") | |
}) { error in | |
print(error) | |
} | |
.disposed(by: disposeBag) | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment