#xcode #macos #cocoa #interface-builder
#xcode #macos #какао #конструктор интерфейса
Вопрос:
В моем appdelegate.m applicationDidFinishLaunching не вызывается. Я читал, что это связано с тем, что делегат моего «приложения» подключен неправильно, но я не знаю, как его подключить. Что я делаю, так это щелкаю правой кнопкой мыши по приложению из файла XIB и перетаскиваю куда-нибудь выход делегата… но не знаю, где. Любая помощь приветствуется. Спасибо!
Ответ №1:
В вашем файле MainMenu.xib убедитесь, что есть экземпляр вашего класса AppDelegate. Чтобы создать его, перетащите обычный объект (синий куб) в список и задайте для его имени класса значение AppDelegate (или любое другое имя класса делегата вашего приложения).
Также в MainMenu.xib, чтобы подключить его, перетащите соединение из объекта приложения в ваш экземпляр AppDelegate (синий куб) и подключите его к выходу делегата.
Выполнено.
Комментарии:
1. Вы сэкономили мне много времени, спасибо! В дополнение к этому мне пришлось связать его с владельцем файла.
2. Концептуальный скачок заключается в понимании того, что nib / xib представляет собой набор экземпляров сублимированных объектов. В запущенном приложении обычно есть только один из основных архитектурных элементов, таких как ваш экземпляр NSApp и его делегат. Сборки контроллера / представления документа являются очевидным исключением, но даже в этом случае отдельный прототип xib «документа» содержит один объект, представляющий экземпляр документа, главное окно и т. Д. Однако вы не включаете предварительно созданный экземпляр объекта модели в xib (например, Person), поскольку это переменная (обычно нет одного человека).). Ключевые понятия. 🙂
3. Спасибо за это! Я уже потратил день, пытаясь выяснить, почему мой помощник по входу в систему внезапно перестал работать. Я случайно удалил, а затем создал новый MainMenu.xib
4. В Xcode 6 (ранее не тестировался) кажется, что нужно связать только владельца файла, а не объект приложения.
5. Владельцем файла действительно является приложение в файлах MainMenu.nib.
Ответ №2:
Вот что нужно попробовать, если вы обновились до Swift 3:
Взгляните на свой «AppDelegate.swift» и убедитесь, что соответствующая строка выглядит следующим образом:
func applicationDidFinishLaunching(_ aNotification: Notification) {
в отличие от этого:
func applicationDidFinishLaunching(_ aNotification: NSNotification) {
Я только что обновил приложение и не подумал проверить. В результате мое приложение было запущено, но соответствующий метод так и не был вызван. Очевидно, что затем вам следует проверить наличие других имеющихся у вас функций, которые принимают объекты уведомлений.
Комментарии:
1. Спасибо, это то, что устранило мою проблему, возникшую из приложения Swift 2.
2. Я обнаружил, что мне также пришлось выполнить продукт> Очистить