【RxSwift】UITextField와 UILabel의 데이터 바인딩
소개
라고 말한 RxSwift 초보자용의 기사입니다.
RxSwift를 사용하여 간단한 데이터 바인딩 샘플을 만듭니다.
이 기사의 목표
이 기사에서는 ViewController 및 ViewModel 값을 bind하여 UITextField가 업데이트되면 UILabel이 업데이트되는 샘플을 만듭니다.
샘플의 전체 이미지
ViewController와 ViewModel간에 데이터 바인딩을 수행하고 값이 업데이트되면 View가 업데이트합니다.
아래 준비
Xcode에서 새 프로젝트를 만들고 RxSwift 및 RxCocoa를 가져옵니다.
RxSwift 및 RxCocoa 가져오기
【Swift】 Carthage에서 RxSwift 가져오기
이 기사를 참조하여 RxSwift를 프로젝트로 가져옵니다.
View 준비
먼저 StoryBoard에 UITextField와 UILabel을 놓고 ViewController에 연결합니다.
ViewContoller.swiftimport UIKit
class ViewController: UIViewController {
@IBOutlet weak private var textField: UITextField!
@IBOutlet weak private var titleLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
}
TextField 업데이트 모니터링
그런 다음 TextField가 입력을 모니터링하는 코드를 ViewController에 추가합니다.
ViewContoller.swiftimport UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak private var textField: UITextField!
@IBOutlet weak private var titleLabel: UILabel!
private let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
bind()
}
private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
// ここでViewModelに値の更新を通知します。
}
.disposed(by: disposeBag)
}
}
ViewModel에서 대상 값 만들기
ViewModel.swiftimport RxSwift
class ViewModel {
var title: Observable<String> {
return titleSubject
}
private let titleSubject = PublishSubject<String>()
}
모니터링할 변수를 만들고 관리합니다.
대상인 titleSubject는 외부에서 업데이트할 수 없도록 캡슐화합니다.
ViewController에서 값을 받는 코드 추가
ViewContoller.swiftimport UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak private var textField: UITextField!
@IBOutlet weak private var titleLabel: UILabel!
private let viewModel = ViewModel()
private let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
bind()
}
private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
// ここでViewModelに値の更新を通知します。
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
// ここでViewModelの更新を受け取ります。
}.disposed(by: disposeBag)
}
}
ViewController에서 VideoModel 값 업데이트
ViewModel의 관리 대상은 캡슐화하고 있으므로 새롭게 함수를 만들어 값을 갱신합니다.
ViewContoller.swift private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
guard let value = $0.element else { return }
self?.viewModel.set(text: value)
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
// ここでViewModelの更新を受け取ります。
}.disposed(by: disposeBag)
}
ViewModel.swiftimport RxSwift
class ViewModel {
var title: Observable<String> {
return titleSubject
}
private let titleSubject = PublishSubject<String>()
func set(text: String) {
titleSubject.onNext(text)
}
}
이제 ViewController에서 VideoModel의 모니터링된 값을 업데이트할 수 있습니다.
ViewModel 업데이트를 받고 View 업데이트
ViewModel을 업데이트 할 수있었습니다.
마지막으로 방금 만든 ViewModel 값 업데이트를 받는 코드에 View를 업데이트하는 코드를 추가합니다.
ViewContoller.swift private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
guard let value = $0.element else { return }
self?.viewModel.set(text: value)
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
self?.titleLabel.text = $0.element
}.disposed(by: disposeBag)
}
쉽게 UITextField와 UILabel 데이터를 바인딩 할 수있었습니다.
샘플 코드
htps : // 기주 b. 코 m / 하나오 / Rx ぃ ft_ 베긴_
요약
세세한 부분에 대한 설명은 충분하지 않지만 RxSwift를 사용하여 데이터 바인딩을 쉽게 할 수있었습니다.
기사에 대해 잘못된 부분이나 지적 등이 있으면 의견에 부탁드립니다.
Reference
이 문제에 관하여(【RxSwift】UITextField와 UILabel의 데이터 바인딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hananaonao/items/c0083cecbbadf41f9337
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ViewController와 ViewModel간에 데이터 바인딩을 수행하고 값이 업데이트되면 View가 업데이트합니다.
아래 준비
Xcode에서 새 프로젝트를 만들고 RxSwift 및 RxCocoa를 가져옵니다.
RxSwift 및 RxCocoa 가져오기
【Swift】 Carthage에서 RxSwift 가져오기
이 기사를 참조하여 RxSwift를 프로젝트로 가져옵니다.
View 준비
먼저 StoryBoard에 UITextField와 UILabel을 놓고 ViewController에 연결합니다.
ViewContoller.swiftimport UIKit
class ViewController: UIViewController {
@IBOutlet weak private var textField: UITextField!
@IBOutlet weak private var titleLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
}
TextField 업데이트 모니터링
그런 다음 TextField가 입력을 모니터링하는 코드를 ViewController에 추가합니다.
ViewContoller.swiftimport UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak private var textField: UITextField!
@IBOutlet weak private var titleLabel: UILabel!
private let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
bind()
}
private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
// ここでViewModelに値の更新を通知します。
}
.disposed(by: disposeBag)
}
}
ViewModel에서 대상 값 만들기
ViewModel.swiftimport RxSwift
class ViewModel {
var title: Observable<String> {
return titleSubject
}
private let titleSubject = PublishSubject<String>()
}
모니터링할 변수를 만들고 관리합니다.
대상인 titleSubject는 외부에서 업데이트할 수 없도록 캡슐화합니다.
ViewController에서 값을 받는 코드 추가
ViewContoller.swiftimport UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak private var textField: UITextField!
@IBOutlet weak private var titleLabel: UILabel!
private let viewModel = ViewModel()
private let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
bind()
}
private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
// ここでViewModelに値の更新を通知します。
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
// ここでViewModelの更新を受け取ります。
}.disposed(by: disposeBag)
}
}
ViewController에서 VideoModel 값 업데이트
ViewModel의 관리 대상은 캡슐화하고 있으므로 새롭게 함수를 만들어 값을 갱신합니다.
ViewContoller.swift private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
guard let value = $0.element else { return }
self?.viewModel.set(text: value)
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
// ここでViewModelの更新を受け取ります。
}.disposed(by: disposeBag)
}
ViewModel.swiftimport RxSwift
class ViewModel {
var title: Observable<String> {
return titleSubject
}
private let titleSubject = PublishSubject<String>()
func set(text: String) {
titleSubject.onNext(text)
}
}
이제 ViewController에서 VideoModel의 모니터링된 값을 업데이트할 수 있습니다.
ViewModel 업데이트를 받고 View 업데이트
ViewModel을 업데이트 할 수있었습니다.
마지막으로 방금 만든 ViewModel 값 업데이트를 받는 코드에 View를 업데이트하는 코드를 추가합니다.
ViewContoller.swift private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
guard let value = $0.element else { return }
self?.viewModel.set(text: value)
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
self?.titleLabel.text = $0.element
}.disposed(by: disposeBag)
}
쉽게 UITextField와 UILabel 데이터를 바인딩 할 수있었습니다.
샘플 코드
htps : // 기주 b. 코 m / 하나오 / Rx ぃ ft_ 베긴_
요약
세세한 부분에 대한 설명은 충분하지 않지만 RxSwift를 사용하여 데이터 바인딩을 쉽게 할 수있었습니다.
기사에 대해 잘못된 부분이나 지적 등이 있으면 의견에 부탁드립니다.
Reference
이 문제에 관하여(【RxSwift】UITextField와 UILabel의 데이터 바인딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hananaonao/items/c0083cecbbadf41f9337
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
먼저 StoryBoard에 UITextField와 UILabel을 놓고 ViewController에 연결합니다.
ViewContoller.swift
import UIKit
class ViewController: UIViewController {
@IBOutlet weak private var textField: UITextField!
@IBOutlet weak private var titleLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
}
TextField 업데이트 모니터링
그런 다음 TextField가 입력을 모니터링하는 코드를 ViewController에 추가합니다.
ViewContoller.swiftimport UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak private var textField: UITextField!
@IBOutlet weak private var titleLabel: UILabel!
private let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
bind()
}
private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
// ここでViewModelに値の更新を通知します。
}
.disposed(by: disposeBag)
}
}
ViewModel에서 대상 값 만들기
ViewModel.swiftimport RxSwift
class ViewModel {
var title: Observable<String> {
return titleSubject
}
private let titleSubject = PublishSubject<String>()
}
모니터링할 변수를 만들고 관리합니다.
대상인 titleSubject는 외부에서 업데이트할 수 없도록 캡슐화합니다.
ViewController에서 값을 받는 코드 추가
ViewContoller.swiftimport UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak private var textField: UITextField!
@IBOutlet weak private var titleLabel: UILabel!
private let viewModel = ViewModel()
private let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
bind()
}
private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
// ここでViewModelに値の更新を通知します。
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
// ここでViewModelの更新を受け取ります。
}.disposed(by: disposeBag)
}
}
ViewController에서 VideoModel 값 업데이트
ViewModel의 관리 대상은 캡슐화하고 있으므로 새롭게 함수를 만들어 값을 갱신합니다.
ViewContoller.swift private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
guard let value = $0.element else { return }
self?.viewModel.set(text: value)
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
// ここでViewModelの更新を受け取ります。
}.disposed(by: disposeBag)
}
ViewModel.swiftimport RxSwift
class ViewModel {
var title: Observable<String> {
return titleSubject
}
private let titleSubject = PublishSubject<String>()
func set(text: String) {
titleSubject.onNext(text)
}
}
이제 ViewController에서 VideoModel의 모니터링된 값을 업데이트할 수 있습니다.
ViewModel 업데이트를 받고 View 업데이트
ViewModel을 업데이트 할 수있었습니다.
마지막으로 방금 만든 ViewModel 값 업데이트를 받는 코드에 View를 업데이트하는 코드를 추가합니다.
ViewContoller.swift private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
guard let value = $0.element else { return }
self?.viewModel.set(text: value)
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
self?.titleLabel.text = $0.element
}.disposed(by: disposeBag)
}
쉽게 UITextField와 UILabel 데이터를 바인딩 할 수있었습니다.
샘플 코드
htps : // 기주 b. 코 m / 하나오 / Rx ぃ ft_ 베긴_
요약
세세한 부분에 대한 설명은 충분하지 않지만 RxSwift를 사용하여 데이터 바인딩을 쉽게 할 수있었습니다.
기사에 대해 잘못된 부분이나 지적 등이 있으면 의견에 부탁드립니다.
Reference
이 문제에 관하여(【RxSwift】UITextField와 UILabel의 데이터 바인딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hananaonao/items/c0083cecbbadf41f9337
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak private var textField: UITextField!
@IBOutlet weak private var titleLabel: UILabel!
private let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
bind()
}
private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
// ここでViewModelに値の更新を通知します。
}
.disposed(by: disposeBag)
}
}
ViewModel.swift
import RxSwift
class ViewModel {
var title: Observable<String> {
return titleSubject
}
private let titleSubject = PublishSubject<String>()
}
모니터링할 변수를 만들고 관리합니다.
대상인 titleSubject는 외부에서 업데이트할 수 없도록 캡슐화합니다.
ViewController에서 값을 받는 코드 추가
ViewContoller.swiftimport UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak private var textField: UITextField!
@IBOutlet weak private var titleLabel: UILabel!
private let viewModel = ViewModel()
private let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
bind()
}
private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
// ここでViewModelに値の更新を通知します。
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
// ここでViewModelの更新を受け取ります。
}.disposed(by: disposeBag)
}
}
ViewController에서 VideoModel 값 업데이트
ViewModel의 관리 대상은 캡슐화하고 있으므로 새롭게 함수를 만들어 값을 갱신합니다.
ViewContoller.swift private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
guard let value = $0.element else { return }
self?.viewModel.set(text: value)
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
// ここでViewModelの更新を受け取ります。
}.disposed(by: disposeBag)
}
ViewModel.swiftimport RxSwift
class ViewModel {
var title: Observable<String> {
return titleSubject
}
private let titleSubject = PublishSubject<String>()
func set(text: String) {
titleSubject.onNext(text)
}
}
이제 ViewController에서 VideoModel의 모니터링된 값을 업데이트할 수 있습니다.
ViewModel 업데이트를 받고 View 업데이트
ViewModel을 업데이트 할 수있었습니다.
마지막으로 방금 만든 ViewModel 값 업데이트를 받는 코드에 View를 업데이트하는 코드를 추가합니다.
ViewContoller.swift private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
guard let value = $0.element else { return }
self?.viewModel.set(text: value)
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
self?.titleLabel.text = $0.element
}.disposed(by: disposeBag)
}
쉽게 UITextField와 UILabel 데이터를 바인딩 할 수있었습니다.
샘플 코드
htps : // 기주 b. 코 m / 하나오 / Rx ぃ ft_ 베긴_
요약
세세한 부분에 대한 설명은 충분하지 않지만 RxSwift를 사용하여 데이터 바인딩을 쉽게 할 수있었습니다.
기사에 대해 잘못된 부분이나 지적 등이 있으면 의견에 부탁드립니다.
Reference
이 문제에 관하여(【RxSwift】UITextField와 UILabel의 데이터 바인딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hananaonao/items/c0083cecbbadf41f9337
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak private var textField: UITextField!
@IBOutlet weak private var titleLabel: UILabel!
private let viewModel = ViewModel()
private let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
bind()
}
private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
// ここでViewModelに値の更新を通知します。
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
// ここでViewModelの更新を受け取ります。
}.disposed(by: disposeBag)
}
}
ViewModel의 관리 대상은 캡슐화하고 있으므로 새롭게 함수를 만들어 값을 갱신합니다.
ViewContoller.swift
private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
guard let value = $0.element else { return }
self?.viewModel.set(text: value)
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
// ここでViewModelの更新を受け取ります。
}.disposed(by: disposeBag)
}
ViewModel.swift
import RxSwift
class ViewModel {
var title: Observable<String> {
return titleSubject
}
private let titleSubject = PublishSubject<String>()
func set(text: String) {
titleSubject.onNext(text)
}
}
이제 ViewController에서 VideoModel의 모니터링된 값을 업데이트할 수 있습니다.
ViewModel 업데이트를 받고 View 업데이트
ViewModel을 업데이트 할 수있었습니다.
마지막으로 방금 만든 ViewModel 값 업데이트를 받는 코드에 View를 업데이트하는 코드를 추가합니다.
ViewContoller.swift private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
guard let value = $0.element else { return }
self?.viewModel.set(text: value)
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
self?.titleLabel.text = $0.element
}.disposed(by: disposeBag)
}
쉽게 UITextField와 UILabel 데이터를 바인딩 할 수있었습니다.
샘플 코드
htps : // 기주 b. 코 m / 하나오 / Rx ぃ ft_ 베긴_
요약
세세한 부분에 대한 설명은 충분하지 않지만 RxSwift를 사용하여 데이터 바인딩을 쉽게 할 수있었습니다.
기사에 대해 잘못된 부분이나 지적 등이 있으면 의견에 부탁드립니다.
Reference
이 문제에 관하여(【RxSwift】UITextField와 UILabel의 데이터 바인딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hananaonao/items/c0083cecbbadf41f9337
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
private func bind() {
textField.rx.text.orEmpty.asObservable()
.subscribe { [weak self] in
guard let value = $0.element else { return }
self?.viewModel.set(text: value)
}
.disposed(by: disposeBag)
viewModel.title.asObservable()
.subscribe { [weak self] in
self?.titleLabel.text = $0.element
}.disposed(by: disposeBag)
}
htps : // 기주 b. 코 m / 하나오 / Rx ぃ ft_ 베긴_
요약
세세한 부분에 대한 설명은 충분하지 않지만 RxSwift를 사용하여 데이터 바인딩을 쉽게 할 수있었습니다.
기사에 대해 잘못된 부분이나 지적 등이 있으면 의견에 부탁드립니다.
Reference
이 문제에 관하여(【RxSwift】UITextField와 UILabel의 데이터 바인딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hananaonao/items/c0083cecbbadf41f9337
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【RxSwift】UITextField와 UILabel의 데이터 바인딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hananaonao/items/c0083cecbbadf41f9337텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)