Сделайте tableView, который показывает предыдущие пользовательские вводы (в других представлениях) - PullRequest
0 голосов
/ 13 марта 2019

Я работаю со своим первым приложением в стеке, я искал много учебных пособий о табличных представлениях, массивах и сегментах, но я даже не могу понять, как решить мою проблему, вот и я:

IНужно, чтобы приложение сохраняло значение в массиве (классе), чтобы я мог получить к нему доступ позже (не в следующем разделе), я сделал другое приложение, более простое, чем последнее, просто с вводом поля UIText и кнопкой для его добавления.к классу.Когда я перехожу от пользовательской части ввода к tableView, tableView становится пустым.Я поставлю код здесь:

TABLE VIEWCONTROLLER


      import UIKit

    class NameTableViewController: UITableViewController {
        var names = [Name]()

        override func viewDidLoad() {
            super.viewDidLoad()
            }

     override func numberOfSections(in tableView: UITableView) -> Int {
            // #warning Incomplete implementation, return the number of sections
            return 1
        }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            // #warning Incomplete implementation, return the number of rows
            return names.count

        }

     override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

            let cellIdentifier = "NameTableViewCell"
            guard let cell = tableView.dequeueReusableCell(withIdentifier: "cellIdentifier", for: indexPath) as? NameTableViewCell else {
                fatalError("The dequeueReusable cell is not an instance of NameTableViewCell")
            }

            let name = names[indexPath.row]

            cell.nameLabel.text = name.name


            return cell
        }



USER INTERFACE VIEWCONTROLLER:





    import UIKit

class ViewController: UIViewController {

var name = [Name]()
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    @IBOutlet weak var nameTextField: UITextField!


    @IBAction func addingButton(_ sender: UIButton) {
       let writtenName = nameTextField.text ?? "No name written"
      let name1 = Name(name: writtenName)
       name.append(name1)
    }

}

<!-- end snippet -->





VIEWCELL:





    class NameTableViewCell: UITableViewCell {

    @IBOutlet weak var nameLabel: UILabel!


    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

<!-- end snippet -->

NAME CLASS METHOD:

    class Name {
    var name: String

    init(name: String) {
       self.name = name
    }

}
!-- end snippet -->

TableView

Пользовательский ввод

Извините, если это глупый вопросКак вы уже заметили, я новичок в программировании, и swift - первый язык, который я изучаю.

1 Ответ

0 голосов
/ 13 марта 2019

Вы можете использовать nsuserdefaults https://developer.apple.com/documentation/foundation/nsuserdefaults и сохранять декодируемую структуру ключа, а затем вызывать ее везде.

// Сохранить данные

struct People: Codable {
    let name: String?
}

var peopleArray = [People]()
let mike =  People(name: "mike")
peopleArray.append(mike)

UserDefaults.standard.set(peopleArray, forKey: "people")

// Запрос сохраненных данных

func getPeople() -> [People]?{

    let myPeople = UserDefaults.standard.data(forKey: "people")
    if myPeople == nil {
        return nil
    }
    let peopleArray = try! JSONDecoder().decode([People].self, from: myPeople!)
    return peopleArray

}

let people = getPeople()

if(people != nil){
   for person in people {
     print(person.name)
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...