Skip to content

Instantly share code, notes, and snippets.

@ShoMasegi
ShoMasegi / FilledTextField+Rx.swift
Last active November 26, 2018 04:15
CustomView + RxSwift
import RxCocoa
import RxSwift
import UIKit
final class FilledTextFieldDelegateProxy:
DelegateProxy<FilledTextField, FilledTextFieldDelegate>,
FilledTextFieldDelegate,
DelegateProxyType {
init(filledTextField: FilledTextField) {
extension Reactive where Base: FilledTextField {
var delegate: DelegateProxy<FilledTextField, FiledTextFieldDelegate> {
return FilledTextFieldDelegateProxy.proxy(for: base)
}
var textDidChange: ControlProperty<String?> {
let source = delegate.methodInvoked(#selector(FilledTextFieldDelegate.filledTextField(_:textFieldTextDidChange:)))
.map { params -> String? in
let text = try castOrThrow(String.self, params[1])
return text
import RxCocoa
import RxSwift
import UIKit
final class FilledTextFieldDelegateProxy:
DelegateProxy<FilledTextField, FilledTextFieldDelegate>,
FilledTextFieldDelegate,
DelegateProxyType {
init(filledTextField: FilledTextField) {
@objc protocol FilledTextFieldDelegate: class {
@objc optional func filledTextField(_ filledTextField: FilledTextField, textFieldTextDidChange _: String)
@objc optional func filledTextFieldDidBeginFocusing(_ textField: FilledTextField)
}
private lazy var nameTextField: CustomTextField = {
let view = CustomTextField(frame: .zero)
view.delegate = self
view.textField.keyboardType = .emailAddress
view.iconImageView.image = UIImage(named: "account")
view.defaultPlaceholderText = "User name"
return view
}()
func customTextField(_ customTextField: CustomTextField, textFieldDidChange text: String?) {
private lazy var nameTextField: CustomTextField = {
let view = CustomTextField(frame: .zero)
view.textField.keyboardType = .emailAddress
view.iconImageView.image = UIImage(named: "account")
view.defaultPlaceholderText = "User name"
view.rx.textDidChange.asDriver().drive(onNext: {
print($0)
}).disposed(by: bag)
return view
}()
import Foundation
import SwiftyXMLParsable
protocol XMLParsable {
init(accessor: XML.Accessor)
}
import Foundation
import SwiftyXMLParsable
struct Station {
var id: String
var name: String
var programs: [Program] = []
}
extension Station: XMLParsable {
import Foundation
import RxSwift
import SwiftyXMLParser
class RadikoService: NSObject {
func get(aid: String) -> Single<[Station]?> {
return Network.xmlProvider.rx.request(.station(aid: "JP13")) // 東京の番組を取得
.map { $0.data } // Moya.Response -> Data
.map { XML.parse($0)} // Data -> XML.Accessor
import Foundation
import SwiftyXMLParsable
struct Program {
var title: String
var url: URL?
var personality: String
var imageUrl: URL?
var metas: [Meta]
}