Загрузка пера и отображение окна в Objective C ++ - PullRequest
0 голосов
/ 30 августа 2009

Я пытаюсь загрузить Nib из конструктора C ++ с помощью Objective C ++. Я искал и нашел достаточно примеров, чтобы собрать код, но он не отображает окно. Или любые окна в этом отношении.

Вот пример конструктора:

JokeSystem::JokeSystem() : fileSystem("/Library/Application Support/Jokes/")
{
    try
    {
        randSystem = new RandSelect<std::string>
                                   (fileSystem.getAllFileContents("%\n"));
    }
    catch (std::ifstream::failure)
    {
        NSWindowController * errorWindowControl = [[NSWindowController alloc] 
                                        initWithWindowNibName:@"ErrorWindow"];
        [errorWindowControl showWindow: nil];
    }
}

Цель этого конструктора - загрузить содержимое каталога в строку. То, что я пытаюсь сделать, это показать окно ошибки, когда файлы не открываются.

ErrorWindow.nib имеет одно окно с кнопкой OK и NSTextView для ошибки, я установил NSWindowController в кончике и подключил его к окну.

Моей единственной ссылкой было то, что большинство примеров показывают это [errorWindowControl showWindow: self]; вместо showWindow: nil, но поскольку это конструктор C ++, у него нет self и this не работает.

Если это имеет значение, этот конструктор вызывается из awakeFromNib метода MainMenu.nib основного NSObject.

Спасибо

1 Ответ

3 голосов
/ 30 августа 2009

Немного странный способ приблизиться к Какао. Я бы посоветовал вам сделать шаг назад, выучить Objective-C, а затем написать свое приложение со слоем пользовательского интерфейса Какао на основе Objective-C поверх любого вспомогательного хранилища или слоя модели.

В любом случае, в этом коде нет ничего особенно плохого (за исключением странного дизайна).

Первое, что нужно проверить, это возвращаемое значение -initWithWindowNibName :. ErrorWindowControl на самом деле не ноль? Если это ноль, то не удалось загрузить NIB.

Как вы пишете само приложение Какао? Надеюсь, стандартный пакет приложений с использованием Xcode

Кроме того, вы не должны жестко задавать путь к / Library / Application Support /. На самом деле, ваше приложение не должно использовать этот каталог в качестве единственного хранилища; многие пользователи не будут иметь права на запись в этот каталог и не смогут установить ваше приложение без прав администратора.

...