После загрузки пера NSViewController ... как я могу получить доступ к NSButton в пате? - PullRequest
1 голос
/ 27 ноября 2009

Я переклассифицировал NSViewController с IBOutlets, подключенными к NSButton во вторичном кончике.

Я могу создать экземпляр NSViewController и применить вид в NSMenu - он прекрасно работает - но как мне получить доступ к кнопке, чтобы изменить ее заголовок?

Так как NSViewController имеет IBOutlets, я предполагал, что сделаю это через контроллер.

//this part works great
NSViewController *viewController = [[toDoViewController alloc] initWithNibName:@"toDoView" bundle:nil];
NSView *newView = [viewController view];
newMenuItem.view = newView;

//this part not so much
[viewController [toDoButton setTitle:someStringHere]];

Какие-нибудь указатели на то, куда идти отсюда?

Изменить, чтобы добавить: класс toDoViewController -

@interface toDoViewController : NSViewController {
    IBOutlet NSButton *checkBoxButton;
    IBOutlet NSButton *toDoButton;
}

@end

1 Ответ

1 голос
/ 27 ноября 2009
[viewController [toDoButton setTitle:someStringHere]];

Как сказали бы интерактивные художественные переводчики: «Кажется, в нем отсутствует глагол».

У вас есть получатель (viewController), полное выражение сообщения ([toDoButton setTitle:…]) и квадратные скобки, но у вас отсутствует селектор. Таким образом, это недопустимое выражение сообщения.

Есть две возможности:

  1. Вы хотите отправить сообщение в контроллер представления, передав в качестве аргумента результат setTitle:, и вы забыли селектор. Я считаю это маловероятным, потому что NSButton setTitle: ничего не возвращает.
  2. Вы хотите получить кнопку от контроллера представления, а затем отправить кнопке сообщение setTitle:. Предполагая, что этот контроллер представления является экземпляром подкласса NSViewController, в который вы добавили свойство toDoButton, используйте [[viewController toDoButton] setTitle:someStringHere] или [viewController.toDoButton setTitle:someStringHere].
...