无法识别的选择器发送到UITableViewCell AccessoryView中的实例

时间:2013-02-14 13:02:25

标签: xamarin.ios monotouch.dialog

我正在尝试为我的UITableViewCell添加一个加号按钮。

我将StringElement子类化并添加UIImageView作为我的Cell AccessoryView。

为了让它可以触摸,我添加UITapGestureRecognizer,但每次尝试这个时,我都会得到同样的例外。

我的GestureRecognizer和ImageView在StringElement的类级别声明 我做错了什么?

我的代码:

public class PrioritizeAndAddElement : StringElement
{
    NSAction Plus;
    UITapGestureRecognizer tap;
    UIImageView image;

    public PrioritizeAndAddElement (string caption, NSAction select, NSAction plus) : base(caption, select)
    {
        Plus = plus;
    }

    public override UITableViewCell GetCell (UITableView tv)
    {   
        UITableViewCell cell = base.GetCell(tv);
        image = new UIImageView(new UIImage("images/app/greenbutton.png"));
        image.UserInteractionEnabled = true;
        image.Frame = new RectangleF(cell.Frame.Width - 65, 14, 25, 25);
        cell.AccessoryView = image;
        tap = new UITapGestureRecognizer(image, new Selector("tapped"));
        image.AddGestureRecognizer(tap);
        return cell;
    }

    [Export("tapped")]
    public void tapped(UIGestureRecognizer sender){
        if(Plus != null)
            Plus();
    }
}

这就是全部。我抓住单元格并添加图像和识别器。在这种情况下,没有任何反应。

当我将识别器添加到我的TableView时,我将获得异常。

我添加了我的元素全班。 我希望这会有所帮助。

1 个答案:

答案 0 :(得分:3)

问题在于

tap = new UITapGestureRecognizer(>>>image<<<, new Selector("tapped"));

手势识别器的目标是图像,您已在PrioritizeAndAddElement类中定义了该图像。尝试这样的事情

public class TappableImageView : UIImageView
{
    NSAction Plus;

    public TappableImageView(NSAction plus, UIImage img) : base(img)
    {
        this.Plus = plus;
    }

    [Export("tapped:")]
    public void Tapped(UIGestureRecognizer sender)
    {
        if(Plus != null)
            Plus();
    }
}

...

image = new TappableImageView(new UIImage("images/brushTexture1.png"));