Щелчок nsbutton не вызывает метод действия - программирование какао с быстрым

Я столкнулся со странной проблемой, я создал подкласс NSWindowController вместе с xib (Swift). Во вновь созданном xib (окне) я добавил две метки, два текстовых поля и кнопку, были созданы выходы для текстовых полей, а также создано действие для кнопки. Когда я запускаю код и нажимаю кнопку, действие не вызывается. Я проверил владельца файлов и соединения, все в порядке и подключено. То же самое я сделал с Objective C, он отлично работает. Я не знаю, что пошло не так.


person kiran Kumar Katuru    schedule 17.03.2019    source источник
comment
В раскадровке щелкните правой кнопкой мыши кнопку и посмотрите, есть ли несколько соединений. если есть, удалите один из них.   -  person Kelvin Chong    schedule 17.03.2019
comment
В консоль что-нибудь записывается?   -  person Willeke    schedule 17.03.2019
comment
@Kelvin, я использую xib, и у меня нет нескольких подключений.   -  person kiran Kumar Katuru    schedule 18.03.2019
comment
@Willeke, в консоли ничего не регистрируется.   -  person kiran Kumar Katuru    schedule 18.03.2019
comment
Можно ли изолировать проблему в небольшом тестовом проекте?   -  person Willeke    schedule 18.03.2019
comment
Я получаю это сообщение в консоли: Demo-CocoaSwift[2676:477984] [по умолчанию] Невозможно загрузить исключения Info.plist (eGPUOverrides)   -  person kiran Kumar Katuru    schedule 18.03.2019
comment
Можете ли вы поделиться скриншотом файла xib и действий кнопки (правый клик по кнопке)   -  person mouseymaniac    schedule 21.03.2019


Ответы (1)


Я столкнулся с той же проблемой. Я добавил сильную ссылку в файле .h на подокно (также известное как NSWindowController), объявленное в главном окне, и проблема решена.

Поместите что-то вроде "@property (strong, nonatomic) NSWindowController *aboutWindowController;" между @interface и @end в вашем заголовочном файле.

Затем в файле реализации (.m) вызовите второе окно:

self.aboutWindowController = [[AboutWindow alloc] initWithWindowNibName:@"AboutWindow"]; [self.aboutWindowController showWindow:self];

Замените aboutWindowController переменной вашего собственного контроллера. Замените AboutWindow именем подкласса вашего оконного контроллера.

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

person webtrick101    schedule 01.04.2020