| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- //
- // RoomFileBrowserViewController.swift
- // DemoApp
- //
- // Created by CY zhao on 2023/7/4.
- //
- import Foundation
- import UIKit
- @objcMembers public class RoomFileBrowserViewController: UITableViewController {
- var modelArray: [RoomFileBroswerModel] = []
- var documentController: UIDocumentInteractionController? = nil
- var bathPath: String
-
- public init(bathPath: String) {
- self.bathPath = bathPath
- super.init(nibName: nil, bundle: nil)
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- public override func viewDidLoad() {
- super.viewDidLoad()
- self.initUI()
- self.loadData()
- }
-
- func initUI() {
- self.tableView.rowHeight = RoomFileBroswerCellHeight
- self.tableView.register(RoomFileBroswerCell.self, forCellReuseIdentifier: "RoomFileBroswerCell")
-
- self.navigationItem.title = self.bathPath
- self.navigationController?.setNavigationBarHidden(false, animated: false)
-
- let backBtnItem = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil)
- self.navigationItem.backBarButtonItem = backBtnItem
- }
-
- func loadData() {
- guard let fileList = try? FileManager.default.contentsOfDirectory(atPath: self.bathPath) else {
- return
- }
- let sortedList = fileList.sorted { file1, file2 in
- return file1.localizedStandardCompare(file2) == .orderedAscending
- }
- for fileName in sortedList {
- let path = URL(fileURLWithPath: self.bathPath).appendingPathComponent(fileName).path
- let model = RoomFileBroswerModel(title: fileName, path: path )
- self.modelArray.append(model)
- }
- }
-
- // MARK: Table view data source
- public override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return self.modelArray.count
- }
- public override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let model = self.modelArray[indexPath.row]
- let cell = tableView.dequeueReusableCell(withIdentifier: "RoomFileBroswerCell") as! RoomFileBroswerCell
- cell.updateUI(model: model)
- return cell
- }
- public override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
- let model = self.modelArray[indexPath.row]
-
- var isDirectory: ObjCBool = false
- FileManager.default.fileExists(atPath: model.path, isDirectory: &isDirectory)
- if isDirectory.boolValue {
- let vc = RoomFileBrowserViewController(bathPath: self.bathPath)
- vc.bathPath = model.path
- self.navigationController?.pushViewController(vc, animated: true)
- } else {
- self.handleFile(model: model)
- }
- }
-
- func handleFile(model: RoomFileBroswerModel) {
- self.documentController = UIDocumentInteractionController(url: URL(fileURLWithPath: model.path))
- self.documentController?.presentOpenInMenu(from: CGRectZero, in: self.view, animated: true)
- }
- }
|