быстрое автоматическое обновление Cell - PullRequest
0 голосов
/ 25 апреля 2018

, которые я добавляю или удаляю из другого ViewController. Я отображаю этот array.count в tableView. Как в swift я могу автоматически обновлять ячейку для array.count?без таймера и Pull для обновления

Или как я могу сделать обновление, когда загруженныйCart.count изменился?Спасибо

class TestTABLEVC: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var tableViewT: UITableView!

var CellT = TestTableViewCell()
var def = UserDefaults.standard
var loadedCart = [[String:Any]]()


override func viewDidLoad() {
    super.viewDidLoad()

    tableViewT.estimatedRowHeight = 100

    tableViewT.dataSource = self
    tableViewT.delegate = self

    loadedCart = UserDefaults.standard.array(forKey: "cartt") as? [[String: Any]] ?? [] 

   //Here need add auto update
 }

ячейка для строки

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TestTableViewCell

    let item = loadedCart[indexPath.row]
    cell.nameLbl?.text = item["name"] as? String
    cell.priceLbl.text = item["price"] as? String
    cell.qntLbl.text = item["qty"] as? String
    let im = item["image"] as? NSData
    cell.PhoroUmage.image = UIImage(data: im! as Data)



    return cell
}

Btn, при нажатии - удалите arr и перезагрузите ячейки

@IBAction func Btn(_ sender: UIButton) {
    def.removeObject(forKey: "cartt")
    print("remove is OK")
  //Here need add auto update when btn pressed
}

Ответы [ 3 ]

0 голосов
/ 25 апреля 2018

Если я вас правильно понимаю, вы можете использовать реактивное программирование для этого. Например, Bond framework можно использовать так:

let todoItems: SafeSignal<[TodoItem]> = ....
let tableView: UITableView = ...
class TodoItemCell: UITableView Cell { ... }

...

todoItems.bind(to: tableView, cellType: TodoItemCell.self) { (cell, item) in
    cell.titleLabel.text = item.name
}

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

0 голосов
/ 26 апреля 2018

Добавить

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

    if let carts = UserDefaults.standard.array(forKey: "cartt") as? [[String: Any]] {
        loadedCart = carts
    }
    DispatchQueue.main.async{
        self.tableViewT.reloadData()
    }
}
0 голосов
/ 25 апреля 2018

вам, вероятно, нужно использовать уведомления.т.е. отправлять уведомление, когда в вашу корзину добавляется что-то новое.

Затем настроить наблюдателя и, каждый раз, когда наблюдатель замечает изменение, обновлять представление таблицы данными повторной загрузки.

Аналогичное использованиеЯ думаю, что здесь указан случай, но его нужно адаптировать к вашим потребностям (если вам понадобится дополнительная помощь, кто-то более опытный, чем я, возможно, сможет помочь со спецификой!) Автоматическая перезагрузка TableViewController On Rewind

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...