輸入電話号碼的區号和八位數主體号碼,下面的Label實時更新最新的輸入,如果區号為3位數,點選按鈕,按鈕名字變成“變!”
Ps:目前還不會,同時滿足上面兩位,下面三位的的限制,以後會更新的
檔案名:ViewController.swift
//
// ViewController.swift
// RxSwiftTest
//
// Created by travey on 2018/11/5.
// Copyright © 2018年 ZhouShijie. All rights reserved.
//
import UIKit
import RxSwift
import RxCocoa
import SnapKit
class ViewController: UIViewController {
var textField1: UITextField!
var textField2: UITextField!
var label: UILabel!
var btn: UIButton!
let disposeBag = DisposeBag()
override func viewDidLoad() {
textField1 = UITextField()
textField2 = UITextField()
label = UILabel()
btn = UIButton()
textField1.layer.borderWidth = 1
textField2.layer.borderWidth = 1
label.textAlignment = .center
btn.setTitle("點我", for: .normal)
btn.layer.borderWidth = 1
btn.setTitleColor(UIColor.black, for: .normal)
view.addSubview(textField1)
view.addSubview(textField2)
view.addSubview(label)
view.addSubview(btn)
textField1.snp.makeConstraints { (make) in
make.centerX.equalToSuperview()
make.top.equalToSuperview().offset(200)
make.height.equalTo(30)
make.width.equalTo(200)
}
textField2.snp.makeConstraints { (make) in
make.centerX.equalToSuperview()
make.top.equalTo(textField1.snp.bottom).offset(30)
make.height.equalTo(30)
make.width.equalTo(200)
}
label.snp.makeConstraints { (make) in
make.centerX.equalToSuperview()
make.top.equalTo(textField2.snp.bottom).offset(30)
make.height.equalTo(30)
make.width.equalTo(500)
}
btn.snp.makeConstraints { (make) in
make.centerX.equalToSuperview()
make.top.equalTo(label.snp.bottom).offset(30)
make.height.equalTo(30)
make.width.equalTo(40)
}
Observable.combineLatest(textField1.rx.text.orEmpty, textField2.rx.text.orEmpty){
"你輸入的電話号碼是\($0)-\($1)"
}
.asDriver(onErrorJustReturn: "")
.drive(label.rx.text)
.disposed(by: disposeBag)
textField1.rx.text.orEmpty.asObservable().asDriver(onErrorJustReturn: "")
.map{ $0.count == 3 }
.drive(btn.rx.isEnabled)
.disposed(by: disposeBag)
btn.rx.tap
.subscribe(onNext: { [weak self] in
self?.btn.setTitle("變!", for: .normal)
})
.disposed(by: disposeBag)
}
}