114 lines
3.0 KiB
Swift
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)
|
|
}
|
|
}
|
|
|
|
}
|