Xamarin.iOS에서 행 작업 작업
이 가이드에서는 UISwipeActionsConfiguration 또는 UITableViewRowAction을 사용하여 테이블 행에 대한 사용자 지정 살짝 밀기 작업을 만드는 방법을 보여 줍니다.
iOS는 테이블에서 UISwipeActionsConfiguration
UITableViewRowAction
작업을 수행하는 두 가지 방법을 제공합니다.
UISwipeActionsConfiguration
는 iOS 11에서 도입되었으며 사용자가 테이블 보기의 행에서 어느 방향으로든 살짝 밀 때 수행해야 하는 작업 집합을 정의하는 데 사용됩니다. 이 동작은 네이티브 Mail.app
이 UITableViewRowAction
클래스는 사용자가 테이블 뷰의 행에서 가로로 왼쪽으로 살짝 밀 때 발생하는 작업을 정의하는 데 사용됩니다.
예를 들어 표를 편집할 때 행에서 왼쪽으로 살짝 밀면 기본적으로 삭제 단추가 표시됩니다. 클래스의 UITableViewRowAction
여러 인스턴스를 연결 UITableView
하여 각각 고유한 텍스트, 서식 및 동작을 사용하여 여러 사용자 지정 작업을 정의할 수 있습니다.
UISwipeActionsConfiguration
다음을 사용하여 살짝 밀기 작업을 구현하는 데 필요한 세 가지 단계가 UISwipeActionsConfiguration
있습니다.
- 재정
GetLeadingSwipeActionsConfiguration
의 및/또는GetTrailingSwipeActionsConfiguration
메서드. 이러한 메서드는 .UISwipeActionsConfiguration
- 반환할 값을 인스턴스화
UISwipeActionsConfiguration
합니다. 이 클래스는 .의UIContextualAction
배열을 가져옵니다. UIContextualAction
을 만듭니다.
이 내용은 다음 섹션에서 자세히 설명합니다.
1. SwipeActionsConfigurations 메서드 구현
UITableViewController
(및 UITableViewSource
UITableViewDelegate
)에는 테이블 뷰 행에서 살짝 밀기 작업 집합을 구현하는 데 사용되는 두 가지 GetLeadingSwipeActionsConfiguration
GetTrailingSwipeActionsConfiguration
메서드가 포함됩니다. 선행 살짝 밀기 동작은 화면 왼쪽에서 오른쪽 언어로, 오른쪽에서 왼쪽 언어로 화면의 오른쪽에서 살짝 밀기를 나타냅니다.
다음 예제에서는 선행 살짝 밀기 구성을 구현하는 방법을 보여 줍니다. 아래에 설명된 컨텍스트 작업에서 두 개의 작업이 만들어집니다. 그런 다음 이러한 작업은 반환 값으로 사용되는 새로 초기화된 UISwipeActionsConfiguration
작업에 전달됩니다.
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. 인스턴스화 UISwipeActionsConfiguration
다음 코드 조각과 같이 메서드를 사용하여 FromActions
새 s UIContextualAction
배열을 추가하여 인스턴스화 UISwipeActionsConfiguration
합니다.
var leadingSwipe = UISwipeActionsConfiguration.FromActions(new UIContextualAction[] { flagAction, definitionAction })
leadingSwipe.PerformsFirstActionWithFullSwipe = false;
작업이 표시되는 순서는 배열에 전달되는 방식에 따라 달라집니다. 예를 들어 선행 살짝 밀기용 위의 코드는 다음과 같이 작업을 표시합니다.
후행 살짝 밀기의 경우 작업은 다음 이미지에 설명된 대로 표시됩니다.
이 코드 조각은 새 PerformsFirstActionWithFullSwipe
속성도 사용합니다. 기본적으로 이 속성은 true로 설정됩니다. 즉, 사용자가 행을 완전히 살짝 밀면 배열의 첫 번째 작업이 발생합니다. 파괴적이지 않은 작업(예: "삭제")이 있는 경우 이는 이상적인 동작이 아니므로 설정 false
해야 합니다.
인증 요청을 처리하는 데 사용하는 UIContextualAction
상황별 작업은 사용자가 테이블 행을 살짝 밀면 표시되는 작업을 실제로 만드는 위치입니다.
작업을 UIContextualActionStyle
초기화하려면 , 제목 및 UIContextualActionHandler
. 작업 UIContextualActionHandler
, 작업이 표시된 뷰 및 완료 처리기의 세 가지 매개 변수를 사용합니다.
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;
}
작업의 배경색 또는 이미지와 같은 다양한 시각적 속성을 편집할 수 있습니다. 위의 코드 조각은 작업에 이미지를 추가하고 배경색을 파란색으로 설정하는 방법을 보여 줍니다.
컨텍스트 작업이 만들어지면 메서드에서 GetLeadingSwipeActionsConfiguration
초기화하는 UISwipeActionsConfiguration
데 사용할 수 있습니다.
UITableViewRowAction
하나 이상의 사용자 지정 행 동작을 UITableView
정의하려면 클래스의 인스턴스를 만들고 메서드를 EditActionsForRow
재정의 UITableViewDelegate
해야 합니다. 예시:
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
}
}
정적 UITableViewRowAction.Create
메서드는 사용자가 표의 행에서 가로로 왼쪽으로 살짝 밀면 Hi 단추를 표시하는 새 UITableViewRowAction
메서드를 만드는 데 사용됩니다. 나중에 새 인스턴스가 TableDelegate
만들어지고 에 연결됩니다 UITableView
. 예시:
TableDelegate tableDelegate;
...
// Replace the standard delete button with a "Hi" button
tableDelegate = new TableDelegate ();
table.Delegate = tableDelegate;
위의 코드가 실행되고 사용자가 테이블 행에서 왼쪽으로 살짝 밀면 기본적으로 표시되는 삭제 단추 대신 Hi 단추가 표시됩니다.
사용자가 Hi 단추를 Hello World!
탭하면 애플리케이션이 디버그 모드에서 실행될 때 Mac용 Visual Studio 또는 Visual Studio에서 콘솔에 기록됩니다.