Как программно инициализировать значения пера - PullRequest
0 голосов
/ 25 декабря 2011

Я пытаюсь инициализировать значения внутри представления (созданного внутри файла пера) программно. Я постараюсь сделать небольшой брифинг моего сценария:

У меня есть файл пера с видом внутри. В этом представлении есть несколько элементов (TextViews, CheckBox и т. Д.)

Предполагается, что это представление является шаблоном включения новых данных в мою программу (это не основное представление). Вот инициализация окон вида:

NewWindow = [[NSWindow alloc] initWithContentRect:frame
                                        styleMask:( NSBorderlessWindowMask| NSClosableWindowMask | NSTitledWindowMask) 
                                          backing:NSBackingStoreBuffered
                                            defer:NO];
[NewWindow setIsVisible:NO];
[NewWindow setReleasedWhenClosed:NO];
[NewWindow setBackgroundColor:[NSColor windowBackgroundColor]];
[NewWindow setContentView: MyView];
[NewWindow setDelegate:self];

Я называю окна, делающие его видимым.

MyView - это соединение IBOutlet с видом пера. Это представление является модифицированным NSView, и у него есть собственный файл класса.

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

Я создал метод инициализации в классе MyViews, чтобы инициализировать поля шаблона в соответствии с моими потребностями. Я называю инициализацию так:

[MyView initialize:InitClass];

Моя проблема, с которой я сталкиваюсь, заключается в том, что этот объект MyView отличается от объекта в файле пера, даже если все соединения (IBOutlets) подключены. Затем, когда я запускаю этот метод, ничего не происходит (так как метод initialize пытается изменить значение нераспределенных полей).

Я включил NSLog, чтобы увидеть адрес моих объектов, и подтвердил, что тот, что в файле пера, не совпадает с тем, что указан в IBOutlet

Я создаю это свойство IBOutlet следующим образом:

@property (assign) IBOutlet MyNewView *MyView;

Кто-нибудь знает, как решить эту проблему?

1 Ответ

1 голос
/ 25 декабря 2011
  1. Вы никогда не должны звонить viewWillMoveToWindow:. Это информационное событие.

  2. Не похоже, что вы показываете достаточно кода. Я не вижу никаких доказательств того, что вы загружаете перо. Естественно, если вы создаете экземпляр MyView, вызывая [[MyView alloc] init] или аналогичный, это другой MyView. Если вы хотите, чтобы ваша розетка указывала на точку в наконечнике, вам необходимо загрузить ее как владелец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...