mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
123 lines
3.9 KiB
Swift
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)
|
|
|
|
}
|
|
|
|
}
|