Bark/Controller/NewServerViewController.swift
Fin 66c02d34f5 调整 NewServerViewModel
返回时更改标题
2020-11-28 20:04:38 +08:00

123 lines
3.9 KiB
Swift

//
// NewServerViewController.swift
// Bark
//
// Created by huangfeng on 2018/6/25.
// Copyright © 2018 Fin. All rights reserved.
//
import UIKit
import Material
import SnapKit
import SafariServices
import RxSwift
import RxCocoa
class NewServerViewController: BaseViewController {
let addressTextField : TextField = {
let textField = TextField()
textField.keyboardType = .URL
textField.placeholder = NSLocalizedString("ServerAddress")
textField.detail = NSLocalizedString("ServerExample")
textField.transition([ .scale(0.85) , .opacity(0)] )
textField.detailLabel.transition([ .scale(0.85) , .opacity(0)] )
return textField
}()
let noticeLabel: UILabel = {
let label = UILabel()
label.text = NSLocalizedString("DeploymentDocuments")
label.textColor = Color.blue.base
label.font = UIFont.systemFont(ofSize: 12)
label.transition([ .scale(0.85) , .opacity(0), .translate(x: 50)] )
label.isUserInteractionEnabled = true
label.addGestureRecognizer(UITapGestureRecognizer())
return label
}()
lazy var doneButton: BKButton = {
let doneButton = BKButton()
doneButton.setImage(Icon.check, for: .normal)
doneButton.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
navigationItem.setRightBarButtonItem(item: UIBarButtonItem(customView: doneButton))
return doneButton
}()
override func makeUI() {
navigationItem.title = NSLocalizedString("AddServer")
self.view.layout(addressTextField)
.top(kNavigationHeight + 40).left(10).right(10)
self.view.addSubview(noticeLabel)
noticeLabel.snp.makeConstraints { (make) in
make.top.equalTo(self.addressTextField.snp.bottom).offset(40)
make.left.equalTo(self.addressTextField)
}
}
override func bindViewModel() {
guard let viewModel = self.viewModel as? NewServerViewModel else {
return
}
let noticeTap = noticeLabel.gestureRecognizers!.first!.rx
.event
.map({ (_) -> () in
return ()
})
.asDriver(onErrorJustReturn: ())
let done = doneButton.rx.tap
.map({[weak self] in
return self?.addressTextField.text ?? ""
})
.asDriver(onErrorDriveWith: .empty())
let viewDidAppear = rx
.methodInvoked(#selector(viewDidAppear(_:)))
.map{ _ in () }
.asDriver(onErrorDriveWith: .empty())
let output = viewModel.transform(
input: NewServerViewModel.Input(
noticeClick: noticeTap,
done: done,
viewDidAppear: viewDidAppear
))
//
output.showKeyboard.drive(onNext: { [weak self] show in
if show {
_ = self?.addressTextField.becomeFirstResponder()
}
else{
self?.addressTextField.resignFirstResponder()
}
}).disposed(by: rx.disposeBag)
//
output.notice.drive(onNext: {[weak self] url in
self?.navigationController?.present(BarkSFSafariViewController(url: url), animated: true, completion: nil)
}).disposed(by: rx.disposeBag)
//URL
output.urlText
.drive(self.addressTextField.rx.text)
.disposed(by: rx.disposeBag)
//退
output.pop.drive(onNext: {[weak self] _ in
self?.navigationController?.popViewController(animated: true)
}).disposed(by: rx.disposeBag)
//
output.showSnackbar.drive(onNext: {[weak self] text in
self?.showSnackbar(text: text)
}).disposed(by: rx.disposeBag)
}
}