Jak uzyskać wiersz dla przycisku w tabeli opartej na widoku po kliknięciu przycisku? Wiersz nie jest zaznaczony po kliknięciu przycisku, ale odkryłem, że jeśli logujesz sender.superview.superview w metodzie akcji przycisku, otrzymuję: NSTableRowView: 0x1001b3a90 - wiersz: 2. A więc wiersz znajduje się w dzienniku, ale nie wiem, jak to zrobić programowo. Mam metodę działania przycisku w podklasie NSTableCellView.Pobierz wiersz przycisku w widoku tabeli
Odpowiedz
-[NSTableView rowForView:]
mówi, że to w jego dokumentacji:
ta jest zazwyczaj potrzebne w sposobie działania na rzecz NSButton (lub NSControl), aby dowiedzieć się, jakie rząd (i kolumna) działanie powinno być przeprowadzone na.
Podam tutaj prosty przykład. W tym dodam UIButton w widoku zawartości. Po kliknięciu na przycisk I wywołać metodę i tam uzyskać numer wiersza i zadzwoń jak wymagane
//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];
A gdy użytkownik kliknie na ten temat mam Id z następującym sposobem
-(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
}
nadzieję, że to czego potrzebujesz.
w OSX można to wykorzystać w swoim sposobie działania guzikowa w kontrolerze:
- (IBAction)yourMethod:(NSButtonCell *)sender {
NSInteger selected = [yourTableView selectedRow];
NSLog(@"sender sends :%ld", selected);
}
trzeba ustawić wylot z regulatora do NSTableView
.
To nie zawsze działa, ponieważ można kliknąć przycisk w wierszu bez wybierania odpowiedniego wiersza. – Ely
To również nie działa, ponieważ (w widoku tabeli opartym na komórce) 'sender' jest' NSTableView', a nie 'NSButtonCell'. –
dzielę ten kod 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. usunąć wiersz w widoku tabeli w swift
- 2. Jak mogę śledzić ścieżkę indeksu przycisku w komórce widoku tabeli?
- 3. Usuń wiersz tabeli za pomocą przycisku w nokaucie JS
- 4. Jak wybrać wiersz tabeli podczas długiego naciśnięcia przycisku Swift
- 5. Wybierz wiersz tabeli w jQuery
- 6. Zaktualizuj każdy wiersz w tabeli
- 7. dodać nowy wiersz w tabeli
- 8. Pobierz tekst wewnątrz przycisku.
- 9. JavaFX Aktualizacja paska postępu w widoku tabeli z zadania
- 10. wiersz tabeli tła
- 11. wiersz tabeli klonu
- 12. jquery usunąć wiersz tabeli
- 13. UITableViewScrollPositionNone nie przewija widoku tabeli
- 14. Jak zwinąć wiersz tabeli w Bootstrap?
- 15. CakePHP: Pobierz konkretne pole tabeli w kontrolerze
- 16. Wiersz UPDATE, gdy pasujący wiersz istnieje w innej tabeli
- 17. Dyrektywa o utworzeniu przycisku [pobierz]
- 18. Pobierz dane wiersza tabeli jednym kliknięciem
- 19. LINQ: Pobierz szczegóły tabeli
- 20. uzyskać pojedynczy wiersz z tabeli
- 21. Wiersz tabeli - Podawanie alternatywnych kolorów
- 22. Laravel4 duplikat/kopiuj wiersz tabeli
- 23. FadeOut i usuń wiersz tabeli
- 24. Używanie tabeli tymczasowej w widoku
- 25. Zmień właściwość display wiersz tabeli
- 26. BIRT: Zmienny wiersz Kolor w grupie tabeli
- 27. Jak odświeżyć pojedynczy wiersz w tabeli?
- 28. Zaktualizuj jeden wiersz w tabeli, używając liquibase
- 29. Jquery Zastąp wiersz tabeli w JQuery
- 30. Jak usunąć wiersz tabeli w iPhone'ie
Dzięki, to jest to, czego potrzebowałem. Mogę uzyskać widok tabeli w metodzie akcji przycisku z sender.superview.superview.superview i widok z sender.superview – rdelmar
Akcja powinna zostać wysłana do kontrolera, a kontroler powinien znać widok tabeli. Powinien mieć wylot. Tak więc nie powinno to wymagać śledzenia łańcucha podglądu. I możesz po prostu przekazać 'sender' jako argument' -rowForView: ', ponieważ wyszukuje wiersz zawierający, bezpośrednio lub pośrednio, widok. –
Przeprowadzałem testy, aby zobaczyć, w jaki sposób mogę manipulować różnymi elementami interfejsu użytkownika w tabeli opartej na widoku, więc początkowo miałem metodę działania w delegacie aplikacji (dla uproszczenia) i to nigdy nie było wywoływane. Następnie umieściłem to w widoku komórki niestandardowej tabeli, ponieważ przeczytałem gdzieś, że tam właśnie powinno być. Jak wspomniałeś w swoim komentarzu, wydaje się, że powinien on znajdować się w obiekcie kontrolera, ale czy istnieją pewne ograniczenia dotyczące tego, gdzie może on działać? Dlaczego nie działa w delegacie aplikacji? Nie jestem pewien, jak wygląda łańcuch odpowiadający dla tabeli opartej na widoku. – rdelmar