Передать имя файла в другой клас
У меня есть два ViewController'a и структура с названиями файлов.
В VC1 надо выбрать какой файл будет использоватся путем нажатия на кнопку и передать его в VC2. У VC2 есть метод для считывания файлов с двумя параметрами. В параметр name нужно передать имя файла для дальнейшей обработки. Я пробовал сделать это через Protocol, но это мне не помогло. Хотелось бы знать как это можна сделать с этим кодом. Спасибо
FileName.swift
struct FileName
{
let easyFile:String = "easyFile"
let hardFile:String = "hardFile"
}
ChooseFile.swift
class ChooseFile:UIViewController
{
//Здесь нужно в как то выбрать файл для использования и передать в ReadFile.swift
@IBAction func chooseEasyFile(_ sender:UIButon)
{
// выбрать easyFile
}
@IBAction func chooseHardFile(_ sender:UIButon)
{
// выбрать easyHard
}
ReadFile.swift
class ReadFile:UIViewController
{
let getFile = GetFile()
func ShowContentFile()
{
getFile.readFile(name://? ,type: "txt")
//some code
}
}
Ответы (1 шт):
Если VC1 вызывает VC2 напрямую через segue, то используем стандартный способ
в VC2 создаем переменную для имени файла скажем
var fileName: String?затем в VC1 можно создать такую же переменную для временного хранения выбранного по нажатию кнопок файла допустим
var selectedFileName: String?вызываем
performSegue(withIdentifier:sender:)в методах кнопокв методе VC1
prepare(for:sender:)получаем экземпляр VC2let vc2 = segue.destination as! VC2присваем имя файла
vc2.fileName = selectedFileв VC2 работаем со значением например во
viewWillAppear
Если использовать segue невозможно, можно использовать для сохранения значений общее хранилище - базу данных, UserDefaults и тд