ReaderHive/ReaderHive/Class/Home/C/NRSearchViewController.swift
2025-12-17 18:04:38 +08:00

114 lines
3.0 KiB
Swift

//
// NRSearchViewController.swift
// ReaderHive
//
// Created by on 2025/11/25.
//
import UIKit
import SnapKit
class NRSearchViewController: NRViewController {
lazy var viewModel = NRSearchViewModel()
private lazy var returnButton: UIButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "arrow_left_icon_02"), for: .normal)
button.addAction(UIAction(handler: { [weak self] _ in
self?.nr_handleNavigationBack()
}), for: .touchUpInside)
return button
}()
private lazy var textView: NRSearchInputView = {
let view = NRSearchInputView()
view.didSearch = { [weak self] text in
guard let self = self else { return }
self.search(text)
}
return view
}()
private lazy var homeView: NRSearchHomeView = {
let view = NRSearchHomeView()
view.viewModel = viewModel
view.didSearch = { [weak self] text in
self?.textView.text = text
self?.search(text)
}
return view
}()
private lazy var resultView: NRSearchResultView = {
let view = NRSearchResultView()
view.isHidden = true
view.viewModel = viewModel
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
self.backgroundImageView.isHidden = true
nr_setupUI()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: true)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
textView.becomeFirstResponder()
}
private func search(_ text: String) {
if text.isEmpty {
homeView.isHidden = false
resultView.isHidden = true
} else {
homeView.isHidden = true
resultView.isHidden = false
}
resultView.search(text)
self.viewModel.addSearchRecord(text: text)
}
}
extension NRSearchViewController {
private func nr_setupUI() {
view.addSubview(returnButton)
view.addSubview(textView)
view.addSubview(homeView)
view.addSubview(resultView)
returnButton.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.top.equalToSuperview().offset(UIScreen.safeTop)
make.height.equalTo(44)
}
textView.snp.makeConstraints { make in
make.centerY.equalTo(returnButton)
make.left.equalTo(returnButton.snp.right).offset(12)
make.right.equalToSuperview().offset(-16)
}
homeView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.top.equalTo(returnButton.snp.bottom)
}
resultView.snp.makeConstraints { make in
make.edges.equalTo(homeView)
}
}
}