Добавление нового массива не обновляет мое общее количество массивов в Swift Xcode - PullRequest
0 голосов
/ 29 мая 2020

Проблема: Изначально мой счет верен, однако добавление нового массива не обновляет мою метку общего счетчика массива.

У меня есть контроллер просмотра ( V C), который показывает метку с общим количеством массивов. У меня есть Table View Controller ( TV C), из которого добавляются или удаляются массивы. У меня есть отдельный файл структуры для хранения массивов.

Метка заполняется правильным количеством массивов, когда я ее запускаю. Однако добавление нового элемента массива (через TV C) в симулятор не обновляет метку на V C.

Вопросы:

  1. Должен ли я помещать счетчик в функцию в V C? В настоящее время он находится в viewDidLoad ()
  2. Должен ли я затем вызывать функцию в TV C при добавлении или удалении массива?
  3. Если 2 - да, то могу ли я ссылаться на функцию в VT C? Будет ли это просто updateCount() или мне нужно сослаться на V C контроллер, например ViewController.updateCount()

Я пробовал оба способа, но похоже, что это не работает , если я смогу получить подтверждение, что было бы здорово, тогда я смогу заставить его работать.

Спасибо заранее

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Мое предложение плохое, но оно работает.

Самый простой ответ - использовать переменную stati c, но это будет стоить памяти телефона. пример кода:

import Foundation
import UIKit

class VC: UIViewController {
    static var count = 0
    let label: UILabel = UILabel()

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        label.text = String(VC.count)
    }
}

class TVC: UITableViewController {

    func updateCount() {
        VC.count = VC.count + 1
    }
}

Всякий раз, когда функция updateCount () вызывается в TV C и go возвращается в класс V C, он обновляет счетчик.

Другое мое предложение используется шаблон MVVM, который отправляет VCViewModel в качестве параметра TV C. и количество обновлений в VCViewModel.

Другое предложение - использовать шаблон делегата.

0 голосов
/ 29 мая 2020

Если вы сделаете что-то вроде этого:

var x = 0
var y = x
x = 7
print(y) //y is still 0

Вам нужно обновлять счетчик всякий раз, когда вы меняете количество массивов. Чтобы вызвать функцию контроллера представления из другого контроллера представления, вам необходимо использовать протокол. Я предлагаю вам изучить, как быстро создавать протоколы - я бы помог вам, но это сложно без возможности увидеть код.

...