Após o carregamento nib com NSViewController ... como faço para acessar o NSButton na ponta?
-
05-07-2019 - |
Pergunta
Eu tenho uma subclasse NSViewController com IBOutlets enganchados em um NSButton em um nib secundário.
Eu posso instanciar o NSViewController e aplicar a vista em uma NSMenu - ele funciona muito bem - mas como faço para acessar o botão para alterar o seu título
Uma vez que o NSViewController tem IBOutlets, eu achava que eu ia fazer isso através do controlador.
//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]];
Os ponteiros sobre onde ir a partir daqui?
Editar para adicionar: a classe toDoViewController -
@interface toDoViewController : NSViewController {
IBOutlet NSButton *checkBoxButton;
IBOutlet NSButton *toDoButton;
}
@end
Solução
[viewController [toDoButton setTitle:someStringHere]];
Como os intérpretes ficção interativa diria: “Isso parece estar faltando um verbo.”
Você tem um receptor (viewController
), e uma mensagem-expressão completa ([toDoButton setTitle:…]
), e os suportes, mas que está faltando um seletor. Como tal, esta não é uma mensagem-expressão válida.
Existem duas possibilidades:
- Você quer dizer para enviar uma mensagem para o controlador de vista, passando o resultado de
setTitle:
como seu argumento, e você esqueceu o seletor. Acho isso improvável, porquesetTitle:
de NSButton não retorna nada. - Você quer dizer que para obter o botão do controlador de vista, em seguida, enviar o botão uma mensagem
setTitle:
. Assumindo que este controlador de vista é uma instância de uma subclasse de NSViewController em que você adicionou uma propriedadetoDoButton
, use um[[viewController toDoButton] setTitle:someStringHere]
ou[viewController.toDoButton setTitle:someStringHere]
.