Невозможно связать функции и NSObject в PyObjC и какао

Я следую руководству по PyObjC. В проекте Xcode у меня есть MWController.py, который нужно связать с объектами в MainMenu.xib. (Я сделал Ctrl + перетаскивание и установил для владельца файла значение MWController.)

Вот код;

# MWController.py
import objc
from Foundation import *

class MWController(NSObject):
    tableView = objc.IBOutlet()
    textField = objc.IBOutlet()
    results = []

    @objc.IBAction
    def search_(self,sender):
        search_value = self.textField.stringValue()
        NSLog(u"Search: %s" % search_value)

Итак, tableView связан с NSObject Table View. textField связан с NSObject «Текстовое поле». поиск: связан с NSObject "Кнопка". Из кода, если я введу что-нибудь в текстовое поле и нажму кнопку, сообщение вернется в консоль.

Однако при сборке и запуске, хотя окно и интерфейс были созданы нормально, но консоль показывала,

  • Не удалось подключить выход (tableView) от (NSApplication) к (NSScrollView): отсутствует установщик или переменная экземпляра

  • Не удалось подключить выход (textField) от (NSApplication) к (NSTextField): отсутствует установщик или переменная экземпляра

  • Не удалось подключить действие, целевой класс NSApplication не отвечает на -search:

Я проверил «инспектор соединений», и все они подключились нормально. Я не менял ни одной функции / имени метода. Ссылку тоже переделал. Ни один из них не работает.

Что мне не хватает?


person C. Pave    schedule 20.04.2016    source источник


Ответы (1)


Я обнаружил очень простую ошибку. Причина, по которой он не ссылается, вообще не имеет ничего общего с PyObjC.

Как объясняется в ответе на этот вопрос , MainMenu.xib всегда загружается объектом приложения, даже если класс в Владельце файла изменен.

Вместо этого я мог бы добавить новый NSObject и изменить его класс на MWController, чтобы связать его с MWController.py.

person C. Pave    schedule 20.04.2016