Как загрузить содержимое текстового файла и отобразить его в текстовом представлении SwiftUI? - PullRequest
0 голосов
/ 03 мая 2020

Я создаю новое приложение iOS, используя SwiftUI, и мне нужно отображать содержимое текстового файла в текстовом представлении. Я знаю, как загрузить содержимое файла и сохранить его в строковой переменной. Моя проблема - найти правильное место для размещения этого кода, чтобы я мог ссылаться на него при создании текстового представления. Ниже приведен код представления, в котором находится рассматриваемое представление «Текст».

struct LicenseView: View {
    var body: some View {
        Text("") // How do I populate this with the contents of a text file?
            .navigationBarTitle("License")
            .navigationBarItems(trailing: Button("Check In"){})
    }
}

1 Ответ

1 голос
/ 04 мая 2020

Надеюсь, это поможет. Он использовал Bundle.main для извлечения файла и ScrollView для отображения длинного текста.

import SwiftUI

struct TestView: View {
    @ObservedObject var model = Model()
    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: LicenseView(model: model)){ Text("License") }
            }.padding()
        }
    }
}

struct LicenseView: View{
    @ObservedObject var model: Model
    var body: some View{
        ScrollView {
            VStack {
                Text(model.data).frame(maxWidth: .infinity)
            }
        }.padding()
        .navigationBarTitle("License")
        .navigationBarItems(trailing: Button("Check In"){})
    }
}

class Model: ObservableObject {
    @Published var data: String = ""
    init() { self.load(file: "data") }
    func load(file: String) {
        if let filepath = Bundle.main.path(forResource: file, ofType: "txt") {
            do {
                let contents = try String(contentsOfFile: filepath)
                DispatchQueue.main.async {
                    self.data = contents
                }
            } catch let error as NSError {
                print(error.localizedDescription)
            }
        } else {
            print("File not found")
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...