Как я использую Вызов действия в Xcode Interface Builder - PullRequest
0 голосов
/ 01 мая 2020

У меня возникают проблемы при работе Invision Invition Invation при использовании привязок Аргумента. Может кто-нибудь объяснить, как это должно работать. Если я не использую привязку Argument, то привязка работает, но метод вызывается с параметром nil. Я предполагаю, что привязка Argument предназначена для установки параметра, который будет передан при вызове метода. В моем случае я хочу получить ссылку на объект Table Cell Views. Я получаю ошибку компилятора следующим образом:

Exception while running ibtool: *** -[__NSArrayM insertObject:atIndex:]: object cannot be nil

Я связываю вызов действия с кнопкой в ​​представлении ячейки таблицы.

enter image description here

1 Ответ

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

Обходной путь:

В классе контроллера представления таблицы очереди отчетов:

  • Добавьте протокол NSTableViewDelegate к объявлению. Вам не нужно реализовывать какие-либо методы.
  • Добавить выходы для контроллера массива и представления таблицы.
  • Добавить метод действия
@IBAction func cancelAction(_ sender: NSButton) {
    let row = tableView.row(for: sender)
    if let objects = arrayController.arrangedObjects as? [String] {
        let object = objects[row]
        cancel(object)
    }
}

In IB:

  • Подключите розетки.
  • Подключите делегат табличного представления к контроллеру табличного представления очереди отчетов.
  • Подключите действие кнопки к cancelAction контроллера представления таблицы очередей отчетов.
  • Удалите привязки действий кнопок.
...