2013-02-14 5 views
0

Я пытаюсь добавить кнопку «плюс» к моему UITableViewCell.Непризнанный селектор, отправленный экземпляру в UITableViewCell AccessoryView

Подкласс StringElement и добавьте UIImageView в качестве моего Access AccessView.

Чтобы сделать его осязаемым, я добавляю UITapGestureRecognizer, но каждый раз, когда я пытаюсь это сделать, я получаю то же исключение.

My 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(); 
    } 
} 

Это все. Я хватаю ячейку и добавляю к ней Image и Recognizer. В этом случае ничего не происходит.

Когда я добавляю распознаватель в свой TableView, я получу исключение.

Я добавил весь класс своего Элемента. Надеюсь, это поможет.

+1

Пожалуйста, покажите свой код, трудно догадаться, в чем проблема. –

+0

Что такое полный текст исключения? Предполагая, что речь идет о селекторе 'tapped', вы можете показать нам, как вы его реализовали? – poupou

ответ

2

Проблемы с

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")); 
+0

Приятно, конечно, я должен был это сделать. Я не понял правильного значения этой цели. Конечно, должна быть информация о «Где искать экспорт». Благодаря! –

Смежные вопросы