Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku pokazano, jak utworzyć niestandardowe akcje szybkiego przesunięcia dla wierszy tabeli za pomocą interfejsu użytkownikaISwipeActionsConfiguration lub UITableViewRowAction

System iOS udostępnia dwa sposoby wykonywania akcji w tabeli: UISwipeActionsConfiguration i UITableViewRowAction.
UISwipeActionsConfigurationwprowadzono w systemie iOS 11 i służy do definiowania zestawu akcji, które powinny mieć miejsce, gdy użytkownik ma przesuwać palcem w obu kierunkach w wierszu w widoku tabeli. To zachowanie jest podobne do zachowania natywnego Mail.app
Klasa UITableViewRowAction służy do definiowania akcji, która będzie wykonywana, gdy użytkownik przesuwa palcem w poziomie w poziomie w wierszu w widoku tabeli.
Na przykład podczas edytowania tabeli przesuwanie w lewo w wierszu powoduje domyślne wyświetlenie przycisku Usuń . Dołączając wiele wystąpień UITableViewRowAction klasy do UITableViewklasy , można zdefiniować wiele akcji niestandardowych, z których każdy ma własny tekst, formatowanie i zachowanie.
UISwipeActionsConfiguration
Istnieją trzy kroki wymagane do zaimplementowania akcji przesunięcia za pomocą UISwipeActionsConfigurationpolecenia :
- Zastąpić
GetLeadingSwipeActionsConfigurationmetody i/lubGetTrailingSwipeActionsConfiguration. Te metody zwracają wartośćUISwipeActionsConfiguration. UISwipeActionsConfigurationUtwórz wystąpienie elementu, który ma zostać zwrócony. Ta klasa przyjmuje tablicę .UIContextualAction- Utwórz element
UIContextualAction.
Zostały one wyjaśnione bardziej szczegółowo w poniższych sekcjach.
1. Implementowanie metod SwipeActionsConfigurations
UITableViewController (oraz ) UITableViewSourceUITableViewDelegatezawierają dwie metody: GetLeadingSwipeActionsConfiguration i GetTrailingSwipeActionsConfiguration, które są używane do implementowania zestawu akcji przesunięcia w wierszu widoku tabeli. Wiodąca akcja przesunięcia odnosi się do przesunięcia od lewej strony ekranu w języku od lewej do prawej i od prawej strony ekranu w języku od prawej do lewej.
W poniższym przykładzie pokazano implementację wiodącej konfiguracji szybkiego przesunięcia. Dwie akcje są tworzone na podstawie akcji kontekstowych, które zostały wyjaśnione poniżej. Te akcje są następnie przekazywane do nowo zainicjowanego UISwipeActionsConfigurationelementu , który jest używany jako wartość zwracana.
public override UISwipeActionsConfiguration GetLeadingSwipeActionsConfiguration(UITableView tableView, NSIndexPath indexPath)
{
//UIContextualActions
var definitionAction = ContextualDefinitionAction(indexPath.Row);
var flagAction = ContextualFlagAction(indexPath.Row);
//UISwipeActionsConfiguration
var leadingSwipe = UISwipeActionsConfiguration.FromActions(new UIContextualAction[] { flagAction, definitionAction });
leadingSwipe.PerformsFirstActionWithFullSwipe = false;
return leadingSwipe;
}
2. Utworzenie wystąpienia elementu UISwipeActionsConfiguration
UISwipeActionsConfiguration Utwórz wystąpienie obiektu przy użyciu FromActions metody , aby dodać nową tablicę UIContextualActions, jak pokazano w poniższym fragmencie kodu:
var leadingSwipe = UISwipeActionsConfiguration.FromActions(new UIContextualAction[] { flagAction, definitionAction })
leadingSwipe.PerformsFirstActionWithFullSwipe = false;
Należy pamiętać, że kolejność wyświetlania akcji zależy od sposobu ich przekazywania do tablicy. Na przykład powyższy kod dla wiodących przesunięć wyświetla akcje w następujący sposób:

W przypadku przesunięcia końcowego akcje zostaną wyświetlone, jak pokazano na poniższej ilustracji:

Ten fragment kodu korzysta również z nowej PerformsFirstActionWithFullSwipe właściwości. Domyślnie ta właściwość jest ustawiona na true, co oznacza, że pierwsza akcja w tablicy będzie miała miejsce, gdy użytkownik ma pełne przesunięcie w wierszu. Jeśli masz akcję, która nie jest destrukcyjna (na przykład "Usuń", może to nie być idealne zachowanie i dlatego należy ustawić ją na false.
Utwórz UIContextualAction
Akcja kontekstowa polega na tym, że faktycznie tworzysz akcję, która będzie wyświetlana po przesunięciu wiersza tabeli przez użytkownika.
Aby zainicjować akcję, musisz podać UIContextualActionStyletytuł i .UIContextualActionHandler Polecenie UIContextualActionHandler przyjmuje trzy parametry: akcję, widok, w jaki została wyświetlona akcja, oraz program obsługi uzupełniania:
public UIContextualAction ContextualFlagAction(int row)
{
var action = UIContextualAction.FromContextualActionStyle
(UIContextualActionStyle.Normal,
"Flag",
(FlagAction, view, success) => {
var alertController = UIAlertController.Create($"Report {words[row]}?", "", UIAlertControllerStyle.Alert);
alertController.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, null));
alertController.AddAction(UIAlertAction.Create("Yes", UIAlertActionStyle.Destructive, null));
PresentViewController(alertController, true, null);
success(true);
});
action.Image = UIImage.FromFile("feedback.png");
action.BackgroundColor = UIColor.Blue;
return action;
}
Można edytować różne właściwości wizualizacji, takie jak kolor tła lub obraz akcji. Powyższy fragment kodu przedstawia dodawanie obrazu do akcji i ustawianie koloru tła na niebieski.
Po utworzeniu akcji kontekstowych można użyć ich do zainicjowania UISwipeActionsConfiguration metody w metodzie GetLeadingSwipeActionsConfiguration .
UITableViewRowAction
Aby zdefiniować co najmniej jedną niestandardową akcję wiersza dla UITableViewklasy , należy utworzyć wystąpienie UITableViewDelegate klasy i zastąpić metodę EditActionsForRow . Na przykład:
using System;
using System.Collections.Generic;
using System.IO;
using Foundation;
using UIKit;
namespace BasicTable
{
public class TableDelegate : UITableViewDelegate
{
#region Constructors
public TableDelegate ()
{
}
public TableDelegate (IntPtr handle) : base (handle)
{
}
public TableDelegate (NSObjectFlag t) : base (t)
{
}
#endregion
#region Override Methods
public override UITableViewRowAction[] EditActionsForRow (UITableView tableView, NSIndexPath indexPath)
{
UITableViewRowAction hiButton = UITableViewRowAction.Create (
UITableViewRowActionStyle.Default,
"Hi",
delegate {
Console.WriteLine ("Hello World!");
});
return new UITableViewRowAction[] { hiButton };
}
#endregion
}
}
Metoda statyczna UITableViewRowAction.Create służy do tworzenia nowego UITableViewRowAction przycisku, który będzie wyświetlał przycisk Hi po przesunięciu w lewo w poziomie w wierszu w tabeli. Później zostanie utworzone nowe wystąpienie obiektu TableDelegate i dołączone do elementu UITableView. Na przykład:
TableDelegate tableDelegate;
...
// Replace the standard delete button with a "Hi" button
tableDelegate = new TableDelegate ();
table.Delegate = tableDelegate;
Gdy powyższy kod zostanie uruchomiony, a użytkownik przesuwa palcem w lewo w wierszu tabeli, przycisk Hi (Hi ) zostanie wyświetlony zamiast przycisku Usuń wyświetlanego domyślnie:
Jeśli użytkownik naciągnie przycisk Witaj, Hello World! zostanie zapisany w konsoli w Visual Studio dla komputerów Mac lub Visual Studio po uruchomieniu aplikacji w trybie debugowania.
