update
This commit is contained in:
700
Pods/CocoaDebug/Sources/Logs/LogViewController.swift
generated
Normal file
700
Pods/CocoaDebug/Sources/Logs/LogViewController.swift
generated
Normal file
@@ -0,0 +1,700 @@
|
||||
//
|
||||
// Example
|
||||
// man
|
||||
//
|
||||
// Created by man 11/11/2018.
|
||||
// Copyright © 2020 man. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
class LogViewController: UIViewController {
|
||||
|
||||
var reachEndDefault: Bool = true
|
||||
var reachEndRN: Bool = true
|
||||
var reachEndWeb: Bool = true
|
||||
|
||||
var firstInDefault: Bool = true
|
||||
var firstInRN: Bool = true
|
||||
var firstInWeb: Bool = true
|
||||
|
||||
var selectedSegmentIndex: Int = 0
|
||||
var selectedSegment_0: Bool = false
|
||||
var selectedSegment_1: Bool = false
|
||||
var selectedSegment_2: Bool = false
|
||||
|
||||
var defaultReloadDataFinish: Bool = true
|
||||
var rnReloadDataFinish: Bool = true
|
||||
var webReloadDataFinish: Bool = true
|
||||
|
||||
|
||||
@IBOutlet weak var segmentedControl: UISegmentedControl!
|
||||
@IBOutlet weak var deleteItem: UIBarButtonItem!
|
||||
|
||||
@IBOutlet weak var defaultTableView: UITableView!
|
||||
@IBOutlet weak var defaultSearchBar: UISearchBar!
|
||||
var defaultModels: [_OCLogModel] = [_OCLogModel]()
|
||||
var defaultCacheModels: Array<_OCLogModel>?
|
||||
var defaultSearchModels: Array<_OCLogModel>?
|
||||
|
||||
@IBOutlet weak var rnTableView: UITableView!
|
||||
@IBOutlet weak var rnSearchBar: UISearchBar!
|
||||
var rnModels: [_OCLogModel] = [_OCLogModel]()
|
||||
var rnCacheModels: Array<_OCLogModel>?
|
||||
var rnSearchModels: Array<_OCLogModel>?
|
||||
|
||||
@IBOutlet weak var webTableView: UITableView!
|
||||
@IBOutlet weak var webSearchBar: UISearchBar!
|
||||
var webModels: [_OCLogModel] = [_OCLogModel]()
|
||||
var webCacheModels: Array<_OCLogModel>?
|
||||
var webSearchModels: Array<_OCLogModel>?
|
||||
|
||||
|
||||
|
||||
//MARK: - tool
|
||||
//搜索逻辑
|
||||
func searchLogic(_ searchText: String = "") {
|
||||
|
||||
if selectedSegmentIndex == 0
|
||||
{
|
||||
guard let defaultCacheModels = defaultCacheModels else {return}
|
||||
defaultSearchModels = defaultCacheModels
|
||||
|
||||
if searchText == "" {
|
||||
defaultModels = defaultCacheModels
|
||||
} else {
|
||||
guard let defaultSearchModels = defaultSearchModels else {return}
|
||||
|
||||
for _ in defaultSearchModels {
|
||||
if let index = self.defaultSearchModels?.firstIndex(where: { (model) -> Bool in
|
||||
return !model.content.lowercased().contains(searchText.lowercased())//忽略大小写
|
||||
}) {
|
||||
self.defaultSearchModels?.remove(at: index)
|
||||
}
|
||||
}
|
||||
defaultModels = self.defaultSearchModels ?? []
|
||||
}
|
||||
}
|
||||
else if selectedSegmentIndex == 1
|
||||
{
|
||||
guard let rnCacheModels = rnCacheModels else {return}
|
||||
rnSearchModels = rnCacheModels
|
||||
|
||||
if searchText == "" {
|
||||
rnModels = rnCacheModels
|
||||
} else {
|
||||
guard let rnSearchModels = rnSearchModels else {return}
|
||||
|
||||
for _ in rnSearchModels {
|
||||
if let index = self.rnSearchModels?.firstIndex(where: { (model) -> Bool in
|
||||
return !model.content.lowercased().contains(searchText.lowercased())//忽略大小写
|
||||
}) {
|
||||
self.rnSearchModels?.remove(at: index)
|
||||
}
|
||||
}
|
||||
rnModels = self.rnSearchModels ?? []
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
guard let webCacheModels = webCacheModels else {return}
|
||||
webSearchModels = webCacheModels
|
||||
|
||||
if searchText == "" {
|
||||
webModels = webCacheModels
|
||||
} else {
|
||||
guard let webSearchModels = webSearchModels else {return}
|
||||
|
||||
for _ in webSearchModels {
|
||||
if let index = self.webSearchModels?.firstIndex(where: { (model) -> Bool in
|
||||
return !model.content.lowercased().contains(searchText.lowercased())//忽略大小写
|
||||
}) {
|
||||
self.webSearchModels?.remove(at: index)
|
||||
}
|
||||
}
|
||||
webModels = self.webSearchModels ?? []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//MARK: - private
|
||||
func reloadLogs(needScrollToEnd: Bool = false, needReloadData: Bool = true) {
|
||||
|
||||
if selectedSegmentIndex == 0
|
||||
{
|
||||
if defaultReloadDataFinish == false {return}
|
||||
|
||||
if defaultSearchBar.isHidden != false ||
|
||||
rnSearchBar.isHidden != true ||
|
||||
webSearchBar.isHidden != true {
|
||||
defaultSearchBar.isHidden = false
|
||||
rnSearchBar.isHidden = true
|
||||
webSearchBar.isHidden = true
|
||||
}
|
||||
|
||||
if defaultTableView.isHidden != false ||
|
||||
rnTableView.isHidden != true ||
|
||||
webTableView.isHidden != true {
|
||||
defaultTableView.isHidden = false
|
||||
rnTableView.isHidden = true
|
||||
webTableView.isHidden = true
|
||||
}
|
||||
|
||||
if needReloadData == false && defaultModels.count > 0 {return}
|
||||
|
||||
if let arr = _OCLogStoreManager.shared()?.normalLogArray {
|
||||
defaultModels = arr as! [_OCLogModel]
|
||||
}
|
||||
|
||||
self.defaultCacheModels = self.defaultModels
|
||||
|
||||
self.searchLogic(CocoaDebugSettings.shared.logSearchWordNormal ?? "")
|
||||
|
||||
// dispatch_main_async_safe { [weak self] in
|
||||
self.defaultReloadDataFinish = false
|
||||
self.defaultTableView.reloadData {
|
||||
self.defaultReloadDataFinish = true
|
||||
}
|
||||
|
||||
if needScrollToEnd == false {return}
|
||||
|
||||
//table下滑到底部
|
||||
// guard let count = self.defaultModels.count else {return}
|
||||
if self.defaultModels.count > 0 {
|
||||
// guard let firstInDefault = self.firstInDefault else {return}
|
||||
self.defaultTableView.tableViewScrollToBottom(animated: !firstInDefault)
|
||||
self.firstInDefault = false
|
||||
}
|
||||
// }
|
||||
}
|
||||
else if selectedSegmentIndex == 1
|
||||
{
|
||||
if rnReloadDataFinish == false {return}
|
||||
|
||||
if defaultSearchBar.isHidden != true ||
|
||||
rnSearchBar.isHidden != false ||
|
||||
webSearchBar.isHidden != true {
|
||||
defaultSearchBar.isHidden = true
|
||||
rnSearchBar.isHidden = false
|
||||
webSearchBar.isHidden = true
|
||||
}
|
||||
|
||||
if defaultTableView.isHidden != true ||
|
||||
rnTableView.isHidden != false ||
|
||||
webTableView.isHidden != true {
|
||||
defaultTableView.isHidden = true
|
||||
rnTableView.isHidden = false
|
||||
webTableView.isHidden = true
|
||||
}
|
||||
|
||||
if needReloadData == false && rnModels.count > 0 {return}
|
||||
|
||||
if let arr = _OCLogStoreManager.shared()?.rnLogArray {
|
||||
rnModels = arr as! [_OCLogModel]
|
||||
}
|
||||
|
||||
self.rnCacheModels = self.rnModels
|
||||
|
||||
self.searchLogic(CocoaDebugSettings.shared.logSearchWordRN ?? "")
|
||||
|
||||
// dispatch_main_async_safe { [weak self] in
|
||||
self.rnReloadDataFinish = false
|
||||
self.rnTableView.reloadData {
|
||||
self.rnReloadDataFinish = true
|
||||
}
|
||||
|
||||
if needScrollToEnd == false {return}
|
||||
|
||||
//table下滑到底部
|
||||
// guard let count = self.rnModels.count else {return}
|
||||
if self.rnModels.count > 0 {
|
||||
// guard let firstInRN = self.firstInRN else {return}
|
||||
self.rnTableView.tableViewScrollToBottom(animated: !firstInRN)
|
||||
self.firstInRN = false
|
||||
}
|
||||
// }
|
||||
}
|
||||
else
|
||||
{
|
||||
if webReloadDataFinish == false {return}
|
||||
|
||||
if defaultSearchBar.isHidden != true ||
|
||||
rnSearchBar.isHidden != true ||
|
||||
webSearchBar.isHidden != false {
|
||||
defaultSearchBar.isHidden = true
|
||||
rnSearchBar.isHidden = true
|
||||
webSearchBar.isHidden = false
|
||||
}
|
||||
|
||||
if defaultTableView.isHidden != true ||
|
||||
rnTableView.isHidden != true ||
|
||||
webTableView.isHidden != false {
|
||||
defaultTableView.isHidden = true
|
||||
rnTableView.isHidden = true
|
||||
webTableView.isHidden = false
|
||||
}
|
||||
|
||||
if needReloadData == false && webModels.count > 0 {return}
|
||||
|
||||
if let arr = _OCLogStoreManager.shared().webLogArray {
|
||||
webModels = arr as! [_OCLogModel]
|
||||
}
|
||||
|
||||
self.webCacheModels = self.webModels
|
||||
|
||||
self.searchLogic(CocoaDebugSettings.shared.logSearchWordWeb ?? "")
|
||||
|
||||
// dispatch_main_async_safe { [weak self] in
|
||||
self.webReloadDataFinish = false
|
||||
self.webTableView.reloadData {
|
||||
self.webReloadDataFinish = true
|
||||
}
|
||||
|
||||
if needScrollToEnd == false {return}
|
||||
|
||||
//table下滑到底部
|
||||
// guard let count = self.webModels.count else {return}
|
||||
if self.webModels.count > 0 {
|
||||
// guard let firstInWeb = self.firstInWeb else {return}
|
||||
self.webTableView.tableViewScrollToBottom(animated: !firstInWeb)
|
||||
self.firstInWeb = false
|
||||
}
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//MARK: - init
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
let tap = UITapGestureRecognizer.init(target: self, action: #selector(didTapView))
|
||||
tap.cancelsTouchesInView = false
|
||||
view.addGestureRecognizer(tap)
|
||||
|
||||
|
||||
deleteItem.tintColor = Color.mainGreen
|
||||
segmentedControl.tintColor = Color.mainGreen
|
||||
|
||||
if UIScreen.main.bounds.size.width == 320 {
|
||||
segmentedControl.setTitleTextAttributes([NSAttributedString.Key.font: UIFont.systemFont(ofSize: 11)], for: .normal)
|
||||
} else {
|
||||
segmentedControl.setTitleTextAttributes([NSAttributedString.Key.font: UIFont.systemFont(ofSize: 13)], for: .normal)
|
||||
}
|
||||
|
||||
//notification
|
||||
NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: "refreshLogs_CocoaDebug"), object: nil, queue: OperationQueue.main) { [weak self] _ in
|
||||
self?.refreshLogs_notification()
|
||||
}
|
||||
|
||||
|
||||
defaultTableView.tableFooterView = UIView()
|
||||
defaultTableView.delegate = self
|
||||
defaultTableView.dataSource = self
|
||||
// defaultTableView.rowHeight = UITableViewAutomaticDimension
|
||||
defaultSearchBar.delegate = self
|
||||
defaultSearchBar.text = CocoaDebugSettings.shared.logSearchWordNormal
|
||||
defaultSearchBar.isHidden = true
|
||||
//抖动bug
|
||||
defaultTableView.estimatedRowHeight = 0
|
||||
defaultTableView.estimatedSectionHeaderHeight = 0
|
||||
defaultTableView.estimatedSectionFooterHeight = 0
|
||||
|
||||
|
||||
|
||||
rnTableView.tableFooterView = UIView()
|
||||
rnTableView.delegate = self
|
||||
rnTableView.dataSource = self
|
||||
// rnTableView.rowHeight = UITableViewAutomaticDimension
|
||||
rnSearchBar.delegate = self
|
||||
rnSearchBar.text = CocoaDebugSettings.shared.logSearchWordRN
|
||||
rnSearchBar.isHidden = true
|
||||
//抖动bug
|
||||
rnTableView.estimatedRowHeight = 0
|
||||
rnTableView.estimatedSectionHeaderHeight = 0
|
||||
rnTableView.estimatedSectionFooterHeight = 0
|
||||
|
||||
|
||||
|
||||
webTableView.tableFooterView = UIView()
|
||||
webTableView.delegate = self
|
||||
webTableView.dataSource = self
|
||||
// webTableView.rowHeight = UITableViewAutomaticDimension
|
||||
webSearchBar.delegate = self
|
||||
webSearchBar.text = CocoaDebugSettings.shared.logSearchWordWeb
|
||||
webSearchBar.isHidden = true
|
||||
//抖动bug
|
||||
webTableView.estimatedRowHeight = 0
|
||||
webTableView.estimatedSectionHeaderHeight = 0
|
||||
webTableView.estimatedSectionFooterHeight = 0
|
||||
|
||||
|
||||
|
||||
//segmentedControl
|
||||
selectedSegmentIndex = CocoaDebugSettings.shared.logSelectIndex
|
||||
segmentedControl.selectedSegmentIndex = selectedSegmentIndex
|
||||
|
||||
if selectedSegmentIndex == 0 {
|
||||
selectedSegment_0 = true
|
||||
} else if selectedSegmentIndex == 1 {
|
||||
selectedSegment_1 = true
|
||||
} else {
|
||||
selectedSegment_2 = true
|
||||
}
|
||||
|
||||
reloadLogs(needScrollToEnd: true, needReloadData: true)
|
||||
|
||||
|
||||
|
||||
//hide searchBar icon
|
||||
let textFieldInsideSearchBar = defaultSearchBar.value(forKey: "searchField") as! UITextField
|
||||
textFieldInsideSearchBar.leftViewMode = .never
|
||||
textFieldInsideSearchBar.leftView = nil
|
||||
textFieldInsideSearchBar.backgroundColor = .white
|
||||
textFieldInsideSearchBar.returnKeyType = .default
|
||||
|
||||
let textFieldInsideSearchBar2 = rnSearchBar.value(forKey: "searchField") as! UITextField
|
||||
textFieldInsideSearchBar2.leftViewMode = .never
|
||||
textFieldInsideSearchBar2.leftView = nil
|
||||
textFieldInsideSearchBar2.backgroundColor = .white
|
||||
textFieldInsideSearchBar2.returnKeyType = .default
|
||||
|
||||
let textFieldInsideSearchBar3 = webSearchBar.value(forKey: "searchField") as! UITextField
|
||||
textFieldInsideSearchBar3.leftViewMode = .never
|
||||
textFieldInsideSearchBar3.leftView = nil
|
||||
textFieldInsideSearchBar3.backgroundColor = .white
|
||||
textFieldInsideSearchBar3.returnKeyType = .default
|
||||
}
|
||||
|
||||
override func viewWillDisappear(_ animated: Bool) {
|
||||
super.viewWillDisappear(animated)
|
||||
defaultSearchBar.resignFirstResponder()
|
||||
rnSearchBar.resignFirstResponder()
|
||||
webSearchBar.resignFirstResponder()
|
||||
}
|
||||
|
||||
deinit {
|
||||
//notification
|
||||
NotificationCenter.default.removeObserver(self)
|
||||
}
|
||||
|
||||
|
||||
//MARK: - target action
|
||||
@IBAction func didTapDown(_ sender: Any) {
|
||||
if selectedSegmentIndex == 0
|
||||
{
|
||||
defaultTableView.tableViewScrollToBottom(animated: true)
|
||||
defaultSearchBar.resignFirstResponder()
|
||||
reachEndDefault = true
|
||||
}
|
||||
else if selectedSegmentIndex == 1
|
||||
{
|
||||
rnTableView.tableViewScrollToBottom(animated: true)
|
||||
rnSearchBar.resignFirstResponder()
|
||||
reachEndRN = true
|
||||
}
|
||||
else
|
||||
{
|
||||
webTableView.tableViewScrollToBottom(animated: true)
|
||||
webSearchBar.resignFirstResponder()
|
||||
reachEndWeb = true
|
||||
}
|
||||
}
|
||||
|
||||
@IBAction func didTapUp(_ sender: Any) {
|
||||
if selectedSegmentIndex == 0
|
||||
{
|
||||
defaultTableView.tableViewScrollToHeader(animated: true)
|
||||
defaultSearchBar.resignFirstResponder()
|
||||
reachEndDefault = false
|
||||
}
|
||||
else if selectedSegmentIndex == 1
|
||||
{
|
||||
rnTableView.tableViewScrollToHeader(animated: true)
|
||||
rnSearchBar.resignFirstResponder()
|
||||
reachEndRN = false
|
||||
}
|
||||
else
|
||||
{
|
||||
webTableView.tableViewScrollToHeader(animated: true)
|
||||
webSearchBar.resignFirstResponder()
|
||||
reachEndWeb = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@IBAction func resetLogs(_ sender: Any) {
|
||||
if selectedSegmentIndex == 0
|
||||
{
|
||||
defaultModels = []
|
||||
defaultCacheModels = []
|
||||
// defaultSearchBar.text = nil
|
||||
defaultSearchBar.resignFirstResponder()
|
||||
// CocoaDebugSettings.shared.logSearchWordNormal = nil
|
||||
|
||||
_OCLogStoreManager.shared()?.resetNormalLogs()
|
||||
|
||||
// dispatch_main_async_safe { [weak self] in
|
||||
self.defaultTableView.reloadData()
|
||||
// }
|
||||
}
|
||||
else if selectedSegmentIndex == 1
|
||||
{
|
||||
rnModels = []
|
||||
rnCacheModels = []
|
||||
// rnSearchBar.text = nil
|
||||
rnSearchBar.resignFirstResponder()
|
||||
// CocoaDebugSettings.shared.logSearchWordRN = nil
|
||||
|
||||
_OCLogStoreManager.shared()?.resetRNLogs()
|
||||
|
||||
// dispatch_main_async_safe { [weak self] in
|
||||
self.rnTableView.reloadData()
|
||||
// }
|
||||
}
|
||||
else
|
||||
{
|
||||
webModels = []
|
||||
webCacheModels = []
|
||||
// webSearchBar.text = nil
|
||||
webSearchBar.resignFirstResponder()
|
||||
// CocoaDebugSettings.shared.logSearchWordWeb = nil
|
||||
|
||||
_OCLogStoreManager.shared().resetWebLogs()
|
||||
|
||||
// dispatch_main_async_safe { [weak self] in
|
||||
self.webTableView.reloadData()
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@IBAction func segmentedControlAction(_ sender: UISegmentedControl) {
|
||||
selectedSegmentIndex = segmentedControl.selectedSegmentIndex
|
||||
CocoaDebugSettings.shared.logSelectIndex = selectedSegmentIndex
|
||||
|
||||
if selectedSegmentIndex == 0 {
|
||||
rnSearchBar.resignFirstResponder()
|
||||
webSearchBar.resignFirstResponder()
|
||||
} else if selectedSegmentIndex == 1 {
|
||||
defaultSearchBar.resignFirstResponder()
|
||||
webSearchBar.resignFirstResponder()
|
||||
} else {
|
||||
defaultSearchBar.resignFirstResponder()
|
||||
rnSearchBar.resignFirstResponder()
|
||||
}
|
||||
|
||||
if selectedSegmentIndex == 0 && selectedSegment_0 == false {
|
||||
selectedSegment_0 = true
|
||||
reloadLogs(needScrollToEnd: true, needReloadData: true)
|
||||
return
|
||||
}
|
||||
|
||||
if selectedSegmentIndex == 1 && selectedSegment_1 == false {
|
||||
selectedSegment_1 = true
|
||||
reloadLogs(needScrollToEnd: true, needReloadData: true)
|
||||
return
|
||||
}
|
||||
|
||||
if selectedSegmentIndex == 2 && selectedSegment_2 == false {
|
||||
selectedSegment_2 = true
|
||||
reloadLogs(needScrollToEnd: true, needReloadData: true)
|
||||
return
|
||||
}
|
||||
|
||||
reloadLogs(needScrollToEnd: false, needReloadData: false)
|
||||
}
|
||||
|
||||
@objc func didTapView() {
|
||||
if selectedSegmentIndex == 0 {
|
||||
defaultSearchBar.resignFirstResponder()
|
||||
} else if selectedSegmentIndex == 1 {
|
||||
rnSearchBar.resignFirstResponder()
|
||||
} else {
|
||||
webSearchBar.resignFirstResponder()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//MARK: - notification
|
||||
@objc func refreshLogs_notification() {
|
||||
if self.selectedSegmentIndex == 0 {
|
||||
self.reloadLogs(needScrollToEnd: self.reachEndDefault , needReloadData: true)
|
||||
} else if self.selectedSegmentIndex == 1 {
|
||||
self.reloadLogs(needScrollToEnd: self.reachEndRN , needReloadData: true)
|
||||
} else {
|
||||
self.reloadLogs(needScrollToEnd: self.reachEndWeb , needReloadData: true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//MARK: - UITableViewDataSource
|
||||
extension LogViewController: UITableViewDataSource {
|
||||
|
||||
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
if tableView == defaultTableView {
|
||||
return defaultModels.count
|
||||
} else if tableView == rnTableView {
|
||||
return rnModels.count
|
||||
} else {
|
||||
return webModels.count
|
||||
}
|
||||
}
|
||||
|
||||
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||
let cell = tableView.dequeueReusableCell(withIdentifier: "LogCell", for: indexPath) as! LogCell
|
||||
|
||||
if tableView == defaultTableView
|
||||
{
|
||||
cell.model = defaultModels[indexPath.row]
|
||||
}
|
||||
else if tableView == rnTableView
|
||||
{
|
||||
cell.model = rnModels[indexPath.row]
|
||||
}
|
||||
else
|
||||
{
|
||||
cell.model = webModels[indexPath.row]
|
||||
}
|
||||
|
||||
return cell
|
||||
}
|
||||
}
|
||||
|
||||
//MARK: - UITableViewDelegate
|
||||
extension LogViewController: UITableViewDelegate {
|
||||
|
||||
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||
tableView.deselectRow(at: indexPath, animated: true)
|
||||
|
||||
var logTitleString = ""
|
||||
var models_: [_OCLogModel]?
|
||||
|
||||
if tableView == defaultTableView
|
||||
{
|
||||
defaultSearchBar.resignFirstResponder()
|
||||
reachEndDefault = false
|
||||
logTitleString = "Log"
|
||||
models_ = defaultModels
|
||||
}
|
||||
else if tableView == rnTableView
|
||||
{
|
||||
rnSearchBar.resignFirstResponder()
|
||||
reachEndRN = false
|
||||
logTitleString = "RN"
|
||||
models_ = rnModels
|
||||
}
|
||||
else
|
||||
{
|
||||
webSearchBar.resignFirstResponder()
|
||||
reachEndWeb = false
|
||||
logTitleString = "Web"
|
||||
models_ = webModels
|
||||
}
|
||||
|
||||
//
|
||||
guard let models = models_ else {return}
|
||||
|
||||
let vc = JsonViewController.instanceFromStoryBoard()
|
||||
vc.editType = .log
|
||||
vc.logTitleString = logTitleString
|
||||
vc.logModels = models
|
||||
vc.logModel = models[indexPath.row]
|
||||
|
||||
navigationController?.pushViewController(vc, animated: true)
|
||||
|
||||
vc.justCancelCallback = {
|
||||
tableView.reloadData()
|
||||
}
|
||||
}
|
||||
|
||||
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
||||
|
||||
var model: _OCLogModel
|
||||
|
||||
if tableView == defaultTableView {
|
||||
model = defaultModels[indexPath.row]
|
||||
|
||||
} else if tableView == rnTableView {
|
||||
model = rnModels[indexPath.row]
|
||||
|
||||
} else {
|
||||
model = webModels[indexPath.row]
|
||||
}
|
||||
|
||||
if let height = model.str?.height(with: UIFont.boldSystemFont(ofSize: 12), constraintToWidth: UIScreen.main.bounds.size.width) {
|
||||
return height + 10;
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
//MARK: - UIScrollViewDelegate
|
||||
extension LogViewController: UIScrollViewDelegate {
|
||||
|
||||
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
|
||||
if scrollView == defaultTableView {
|
||||
defaultSearchBar.resignFirstResponder()
|
||||
reachEndDefault = false
|
||||
} else if scrollView == rnTableView {
|
||||
rnSearchBar.resignFirstResponder()
|
||||
reachEndRN = false
|
||||
} else {
|
||||
webSearchBar.resignFirstResponder()
|
||||
reachEndWeb = false
|
||||
}
|
||||
}
|
||||
|
||||
func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
||||
if (scrollView.contentOffset.y + 1) >= (scrollView.contentSize.height - scrollView.frame.size.height) {
|
||||
//bottom reached
|
||||
if scrollView == defaultTableView {
|
||||
reachEndDefault = true
|
||||
} else if scrollView == rnTableView {
|
||||
reachEndRN = true
|
||||
} else {
|
||||
reachEndWeb = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//MARK: - UISearchBarDelegate
|
||||
extension LogViewController: UISearchBarDelegate {
|
||||
|
||||
func searchBarSearchButtonClicked(_ searchBar: UISearchBar)
|
||||
{
|
||||
searchBar.resignFirstResponder()
|
||||
}
|
||||
|
||||
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)
|
||||
{
|
||||
if searchBar == defaultSearchBar
|
||||
{
|
||||
CocoaDebugSettings.shared.logSearchWordNormal = searchText
|
||||
searchLogic(searchText)
|
||||
|
||||
// dispatch_main_async_safe { [weak self] in
|
||||
self.defaultTableView.reloadData()
|
||||
// }
|
||||
}
|
||||
else if searchBar == rnSearchBar
|
||||
{
|
||||
CocoaDebugSettings.shared.logSearchWordRN = searchText
|
||||
searchLogic(searchText)
|
||||
|
||||
// dispatch_main_async_safe { [weak self] in
|
||||
self.rnTableView.reloadData()
|
||||
// }
|
||||
}
|
||||
else
|
||||
{
|
||||
CocoaDebugSettings.shared.logSearchWordWeb = searchText
|
||||
searchLogic(searchText)
|
||||
|
||||
// dispatch_main_async_safe { [weak self] in
|
||||
self.webTableView.reloadData()
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user