Не удалось подключить действие: для целевого класса NSApplication

Я продолжаю получать ошибку Could not connect the action startServer: to target of class NSApplication при компиляции. Я понимаю, что ошибка, но не уверен, как ее исправить. Как-то мой xib пытается вызвать метод startServer в NSApplication, которого не существует.

Ответ 1

Звучит так, как будто вы подключили свой элемент пользовательского интерфейса к объекту File Owner, который является экземпляром NSApplication.

Если вы еще этого не сделали, вы хотите перетащить NSObject из палитры библиотеки объектов в Xcode 4 в поле слева от вашего макета. После того, как вы это сделали и выбрали, выберите инспектор идентификации и в поле "Класс" введите "WindowController".

Теперь, когда у вас есть представление вашего WindowController, которое, как вы сказали, содержит startServer:, тогда вы можете подключить к нему свой элемент пользовательского интерфейса. Убедитесь, что ваш метод startServer имеет следующую форму:

- (IBAction)startServer:(id)sender

или вы не сможете установить соединение.

Удачи вам в ваших начинаниях.

Ответ 2

Просто вы можете исправить это двумя путями:

  • [[YourWindowController alloc]initWithWindowNibName:XIB_YOUR_WINDOW_CONTROLLER]; здесь не создавать с владельцем. поэтому NSApplication не будет владельцем.

  • [[YourWindowController alloc]init]; и в YourWindowController.m файл переопределить метод init и вызвать self = [super initWithWindowNibName:XIB_YOUR_WINDOW_CONTROLLER];

один или два будут исправлять эту проблему.

Счастливое кодирование....

Ответ 3

У меня была такая же проблема, но, наконец, она была решена. Я не уверен, что это сработает для вас, но попробуйте следующее:

(построитель интерфейса)

Из библиотеки перетащите NSObject в окно вашего XIB-документа. Отключите объекты, которые вы подключили к File Owner, подключив их к NSObject. Переименуйте NSObject в подходящий. Выделите NSObject, перейдите к инспектору. В разделе "Идентификатор класса" найдите имя только что переименованного NSObject. Сохранить!

Посмотрите, работает ли это для вас! Теперь у меня работала! Удачи!

Ответ 4

Вы установили соединение с владельцем файла в своем основном nib, что вы, вероятно, хотели подключиться к чему-то еще. В каком классе вы реализовали -startServer: в?