Обновление таблицы привязано к ошибке массива - PullRequest
0 голосов
/ 10 июня 2018

Я чрезвычайно новичок в Swift, поэтому я предполагаю, что это ошибка новичка, но вот моя ситуация:

Я пытаюсь создать приложение, которое позволяет вам добавлять вещи в список.У меня есть NSTextField, где пользователи вводят туда данные, и NSButton, чтобы добавить эти данные в массив myTeam.tableView связан (я думаю, это то, что вы называете) с массивом myTeam.

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

К сожалению, как и большинство быстрых обучающих программ и вопросов и ответов, это было для iOS.Но я думал, что попробую.Я добавил

self.tableView.reloadData()
self.refresher.endRefreshing()

к своему коду и получил две ошибки: Value of type '(NSTableView, NSTableColumn?, Int) -> Any?' has no member 'reloadData' и Value of type 'ViewController' has no member 'refresher' соответственно.

Вот мой код ниже:

import Cocoa
import Darwin

class ViewController: NSViewController, NSTableViewDataSource {
 var myTeam = ["Test", "Test2"]



    @IBOutlet weak var myText: NSTextField!
    @IBOutlet weak var AddMember: NSButton!

    @IBAction func addmem(_ sender: Any) {
        myTeam.append(myText.stringValue);
        self.tableView.reloadData()
        self.refresher.endRefreshing()

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


    }

    override var representedObject: Any? {
        didSet {
        // Update the view, if already loaded.
        }
    }
    // MARK: DataSource
    func numberOfRows(in tableView: NSTableView) -> Int {
        return myTeam.count
    }
    func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
        return myTeam[row]
    }
}

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

1 Ответ

0 голосов
/ 10 июня 2018

Самое простое решение, мы собираемся использовать (полное) Привязки какао:

  • Заменить весь код на

    import Cocoa
    
    class ViewController: NSViewController  {
    
        @IBOutlet weak var myText: NSTextField!
    
        @objc dynamic var myTeam = ["Test", "Test2"]
    
        @IBAction func addmem(_ sender: NSButton) {
            myTeam.append(myText.stringValue)
        }
    }
    
  • ВInterface Builder выберите представление таблицы (не включающее представление прокрутки) и нажмите ⌥⌘6 (Инспектор соединений)

    • Отключение dataSource
  • Нажмите ⌥⌘7 (Инспектор привязок)
    • Связывание Содержимое до ViewController> Путь к ключу модели myTeam

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

macOS не знаетпереподготовка.

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