Come si ottiene la riga per un pulsante in una tabella basata sulla vista quando si fa clic sul pulsante? La riga non è selezionata quando si fa clic sul pulsante, ma ho rilevato che se si registra sender.superview.superview nel metodo di azione del pulsante, viene visualizzato: NSTableRowView: 0x1001b3a90 - row: 2. Quindi, la riga è presente nel registro, ma non so come ottenerlo a livello di programmazione. Ho il metodo di azione del pulsante in una sottoclasse di NSTableCellView.Visualizza tabella basata su pulsante nella vista
risposta
-[NSTableView rowForView:]
dice questo nella sua documentazione:
Questo è in genere necessario nel metodo d'azione per un NSButton (o NSControl) per scoprire cosa riga (e colonna) l'azione deve essere eseguita su.
Qui vi sto dando un semplice esempio. In questo sto aggiungendo un UIButton nella visualizzazione del contenuto. Quando ho cliccato sul pulsante che io chiamo un metodo e non ottengo il numero di riga e chiamo come ho richiesto
//Adding a button
UIButton *btnBuyer=[UIButton buttonWithType:UIButtonTypeCustom];
btnBuyer.frame=CGRectMake(238, 10, 26, 32);
btnBuyer.tag=indexPath.row;
[btnBuyer setImage:[UIImage imageNamed:@"buyIcon.png"] forState:UIControlStateNormal];
[btnBuyer addTarget:self action:@selector(goBuyTab:)forControlEvents:UIControlEventTouchUpInside];
[cellNew.contentView addSubview:btnBuyer];
E quando l'utente fa clic su questo ho avuto Id dalla seguente metodo
-(void)goBuyTab:(UIButton *)sender{
NSLog(@"after click buy button function called goBuyTab");
NSLog(@"sender.tag in goBuyTab : %d",sender.tag);
int selectedRow=sender.tag;// This is row number
}
Spero che questo è quello che hai richiesto.
in OSX è possibile utilizzare questo metodo di azione nel vostro cellulare pulsante nel controller:
- (IBAction)yourMethod:(NSButtonCell *)sender {
NSInteger selected = [yourTableView selectedRow];
NSLog(@"sender sends :%ld", selected);
}
è necessario impostare una presa dal controller al NSTableView
.
Questo non sempre funziona perché è perfettamente possibile fare clic su un pulsante di fila senza selezionare la riga sottostante. – Ely
Inoltre non funziona perché (in una vista tabella basata su celle) 'sender' è' 'NSTableView'', non' 'NSButtonCell'. –
Condivido questo codice per Swift 4.
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
........
but.action = #selector(ViewController.buttonAction)
.........
}
@objc func buttonAction(but: NSButton){
let tablerow: NSTableRowView = but.superview?.superview as! NSTableRowView;
let index = table?.row(for: tablerow);
print("\(index));
}
- 1. Incorpora vista raccolta nella tabella personalizzata Visualizza cella
- 2. Il controllo del riordino non è visualizzato nella vista tabella
- 3. Visualizza tabella HTML nella visualizzazione Web
- 4. Vista basata su NSTableView con sezioni
- 5. Nascondere o disabilitare il pulsante Indietro nella vista finale dell'app di navigazione basata sul controller
- 6. Visualizza tabella vs volatile?
- 7. Aggiunta del pulsante Preferiti nella vista elenco
- 8. Come creare una tabella basata su un'altra tabella
- 9. Sezioni alfabetiche nella vista tabella tabella in swift
- 10. ActiveAdmin visualizza il contenuto predefinito della vista
- 11. Pulsante "Visualizza riepilogo" Twitter
- 12. Progettazione basata su domini nella programmazione funzionale?
- 13. iPhone, gancio per la modifica/fatto clic del pulsante nella vista tabella
- 14. SQL query: creare categoria colonna basata su una colonna varchar nella tabella contenente i valori specifici
- 15. Razor Visualizza righe dinamiche della tabella
- 16. Rileva clic sul pulsante nella vista tabella ios xcode per riga multipla e sezione
- 17. UISearchDisplayController senza tabella risultati Visualizza?
- 18. UINavigationController incorporato in una vista contenitore, visualizza un controller Vista tabella con dimensioni errate
- 19. Mathjax non funziona nella pagina Web basata su Ajax
- 20. Visualizza la lunghezza della pagina nella parte inferiore della tabella
- 21. Cerca XML con JavaScript e visualizza i risultati nella tabella
- 22. decoratori funzione con parametri su una vista basata classe Django
- 23. Aggiornare una tabella basata su SUM (valori) in un'altra tabella su più criteri
- 24. Impostazione del contenuto delle celle tabella basata su larghezza disponibile
- 25. Bypass "tabella o vista non esiste" nella compilazione del pacchetto
- 26. Android: vista personalizzata basata sul layout: come?
- 27. Colorare le righe in Vista NSTableview basata
- 28. Visualizza autorizzata o Configura vista come autorizzata?
- 29. Pulsante Radio all'interno tabella
- 30. Ignora pulsante SU nella barra delle azioni
Grazie, questo è quello che mi serviva. Posso ottenere la visualizzazione tabella nel metodo di azione del pulsante da sender.superview.superview.superview e la vista da sender.superview – rdelmar
L'azione deve essere inviata a un controller e il controller deve conoscere la vista tabella. Dovrebbe avere uno sbocco. Quindi, non dovrebbe essere necessario seguire la catena di superview. E puoi semplicemente passare 'sender' come argomento a' -rowForView: ', perché cerca la riga che contiene, direttamente o indirettamente, la vista. –
Stavo facendo alcuni test solo per vedere come potevo manipolare vari elementi dell'interfaccia utente in una tabella basata sulla vista, quindi inizialmente avevo il metodo di azione nell'app delegato (per semplicità) e non è mai stato chiamato. Poi l'ho messo nella visualizzazione cella tabella personalizzata perché ho letto da qualche parte che è dove dovrebbe essere. Come hai detto nel tuo commento, sembra davvero che dovrebbe essere in un oggetto controller, ma c'è qualche restrizione su dove può andare per farlo funzionare? Perché non ha funzionato nel delegato dell'app? Non sono sicuro di come sia la catena di risposta per una tabella basata su viste. – rdelmar