滑动时如何自定义表格视图中的UIContextualAction

时间:2018-10-29 15:06:18

标签: xamarin.ios

我需要创建一个带有图片和文字的操作按钮。下图提供 一个例子。

![1]:https://i.stack.imgur.com/KEuHn.png

我创建了

之类的方法
public UIContextualAction ContextualFlagAction(int row)
    {
        var action = UIContextualAction.FromContextualActionStyle(UIContextualActionStyle.Normal, "Flag", Handler);
            (contextualAction, view, handler) =>
            {
                Console.WriteLine("Hello World!");
                handler(false);
            });

        action.Image = UIImage.FromFile(ResourceIdentifiers.DocumentIcon);

        return action;
    }

但这不是我需要做的。

我如何将该动作自定义为上面的图像。

1 个答案:

答案 0 :(得分:0)

也许您的问题显示为图像结果,您的代码已设置action.image 如果您的图像包含图片和标签,则图片向上,标签向下,那么您就会想要。

public UIContextualAction ContextualFlagAction(int row)
{
    var action = UIContextualAction.FromContextualActionStyle(UIContextualActionStyle.Normal, "Flag", Handler);
        (contextualAction, view, handler) =>
        {
            Console.WriteLine("Hello World!");
            handler(false);
        });

    action.Image = UIImage.FromFile(ResourceIdentifiers.DocumentIcon);
    //this is your setted image
    return action;
}

更多信息:

您可以在Xamarin.ios中自定义TableViewCell。

在UITableViewCell中编写以下方法,在viewcell中重写 DidTransitionToState 方法,您可以将操作替换为按钮

 private UITableView tableViewThis;

    public TableViewCellClass(UITableView tableView)
    {
        this.tableViewThis = tableView;

    }
 public override void DidTransitionToState(UITableViewCellState mask)
    {
        base.DidTransitionToState(mask);
        if ((mask & UITableViewCellState.ShowingDeleteConfirmationMask) == UITableViewCellState.ShowingDeleteConfirmationMask)
        {

            foreach (UIView subview in tableViewThis.Subviews)
            {
                if (subview.Class.Equals("UIContextualAction"))
                    //Delete the delete button of the system
                tableViewThis.WillRemoveSubview(subview);
                subview.BackgroundColor = UIColor.Clear;

                UIButton editBtn = new UIButton(UIButtonType.Custom);
                editBtn.Frame = new CGRect(10, 4, 50, 65);
                editBtn.SetBackgroundImage(UIImage.FromFile("1.png"), UIControlState.Normal);
                editBtn.AdjustsImageWhenHighlighted = false;
                editBtn.TouchUpInside += (sender, e) =>
                {
                    //do something you need
                };
                subview.AddSubview(editBtn);
            }
        }
    }

UIButton可以设置标题和图像。 UIButton具有两个属性:

titleEdgeInsets (顶部,左侧,底部,右侧)

imageEdgeInsets (顶部,左侧,底部,右侧)。

通过设置这两个,您可以实现所需的样式。