输入电话号码的区号和八位数主体号码,下面的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)
}
}