Как создать экземпляр NSObject в файле .xib Интерфейсного разработчика - PullRequest
1 голос
/ 04 июня 2009

Привет,

У меня есть проект приложения на основе представления, в котором я создал класс NSObject с именем "SquareClass". Теперь из конструктора интерфейса XCode я хочу иметь возможность создавать экземпляр этого "SquareClass" в квадратный объект с глобальной областью видимости таким образом, чтобы при создании действий из любых элементов управления пользовательского интерфейса (например, текстовых полей, кнопок и т. Д. ), Я хочу иметь возможность вызывать методы этого объекта в рамках этих действий.

Пример:

(void)MyAction1:(id)color
{
   [square setColor:color];
}

(void)MyAction2:(id)width
{
   [square setWidth:width];
}

Как видите, квадратный объект должен иметь глобальную область видимости. Это может показаться простым или неправильным способом сделать это для некоторых из нас. Я просмотрел Интернет и вроде нашел способ для файла .nib, а не для файла .xib.

Любое предложение будет с благодарностью. Большое спасибо.

Yohann.

ps: Это мой первый пост НИКОГДА, будьте снисходительны.

Ответы [ 3 ]

3 голосов
/ 08 июня 2009

Во-первых, файл NIB, для всех намерений и целей, такой же, как файл XIB; это просто скомпилированная версия файла XIB.

Теперь, чтобы создать объект, полученный из NSObject в вашем NIB / XIB, просто перетащите NSObject из окна библиотеки в ваш файл. Затем в Identity Inspector измените класс на свой собственный класс.

Если вы определяете методы следующим образом:

- (IBAction)myAction:(id)sender

вы сможете подключить их в Интерфейсном Разработчике.

Сказав все это, трудно сказать, является ли то, что вы делаете, правильным делом вообще. Мне кажется, что вы должны использовать подкласс NSViewController, так что взгляните на документацию по этому вопросу.

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

1 голос
/ 04 июня 2009

Если вы создаете класс, расширяющий UIView, то вы можете заставить владельца файла для вашей xib реализовать расширенный класс. С этого момента просто добавьте переменную экземпляра в расширенный класс для квадрата. Последний шаг в этом процессе заключается в добавлении методов в ваш класс для привязки к каждому элементу управления к действиям.

- (IBAction) pinSelected: (id)sender;

Как только вы создадите эти методы (убедитесь, что они возвращают IBAction, это фактически псевдоним для void, но действует как подсказка для INterface Builder), затем вы можете привязать ваши элементы управления к методу через Владелец файла (используя control + drag установить ссылку).

Удачи!

0 голосов
/ 10 июня 2009

Я нашел, как сделать то, что мне было нужно, а НЕ в файле XIB. Это намного проще, чем я думал, хотя приведенные выше предложения ДЕЙСТВИТЕЛЬНЫ.

Чтобы использовать квадратный объект, мне просто нужно было сослаться на файл заголовка:

 #import "square.h"

в SquareUIViewController.h и добавьте ссылку на квадратный объект:

Square *square;

Затем в SquareUIController.m мне просто нужно выделить / инициализировать квадратный объект, прежде чем делать что-либо еще:

(IBAction)myInit
{
square = [[Square alloc] init];
}

Теперь я могу использовать методы первого поста И вуаля!

пс: критики, стреляйте!

...