Como faço para manter um NSPathControl atualizado com o caminho da célula selecionada em uma NSBrowser

votos
5

Eu preciso manter um NSPathControl atualizado com o caminho atualmente selecionado em uma NSBrowser, mas eu estou tendo dificuldade para descobrir uma maneira de obter notificações quando o caminho foi alterado a partir do NSBrowser. A maneira ideal de fazer isso seria apenas para ser para observar o caminho da chave caminho no NSBrowser, mas que dá um KVO só pode observar conjunto de <key>métodos que retornam mensagem vazio e sem atualizações (SetPath retorna um valor de sucesso bool).

Eu também tentei observar o caminho da chave selectedCell, mas eu não estou recebendo notificações quando a seleção não é alterada.

Existe alguma outra maneira muito óbvia de fazer isso que eu estou perdendo?

Publicado 10/12/2008 em 00:47
fonte usuário
Em outras línguas...                            


3 respostas

votos
7

Cortesia de Rob Keniger sobre em Cocoa Dev :

Você já olhou para o exemplo SimpleBrowser in / desenvolvedor / Exemplos? Ele mostra como obter a seleção atual quando é alterada pelo usuário, basicamente por apenas configurar a ação do NSBrowser.

Isso é realmente a maneira de fazê-lo. Apenas implementar um - (void) broswerClicked: método (incluindo o mapeamento lo no construtor de interface) com o que você quer que aconteça cada vez que a seleção muda dentro desse método, por exemplo,

- (void)browserClicked:(id)browser {
    self.pathToSelectedCell = [browser path]; // NSPathControl is bound to pathToSelectedCell
}
Respondeu 10/12/2008 em 04:28
fonte usuário

votos
0

A partir de 10,6, pode-se descobrir quais itens são selecionados, utilizando o callback delegado da seguinte forma:

- (NSIndexSet *)browser:(NSBrowser *)browser selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes inColumn:(NSInteger)column
{
    NSLog(@"New first item of the new selection is at index %@", [proposedSelectionIndexes firstIndex]);
    // Do something with the selected index or indicies
    return proposedSelectionIndexes; // Allow the selection to occur by not changing this
}
Respondeu 06/03/2013 em 19:43
fonte usuário

votos
0

Eu verifiquei apenas no IB, e parece que NSBrowser tem um índice de seleção caminhos de ligação (um array de objetos NSIndexPath) que você poderia monitorar com KVO. É estranho, mas eu não vejo qualquer menção a ele nos docs, por isso, pode ser necessário fazer uma pequena pesquisa para ver se isso é algo que você deve ou não usar, mesmo que isso parece funcionar. Se isso acontecer, no seu método de observação KVO você iria encontrar caminho atual do navegador, e convertê-lo em um NSURL o controle caminho pode usar.

Se isso não funcionar, há também os métodos de delegado - (BOOL)browser:(NSBrowser *)sender selectRow:(NSInteger)row inColumn:(NSInteger)columne - (BOOL)browser:(NSBrowser *)sender selectCellWithString:(NSString *)title inColumn:(NSInteger)column.

Respondeu 10/12/2008 em 01:03
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more