Как использовать UITableViewDelegate.AccessoryButtonTapped (с Monotouch)

Я создаю приложение для iPad, используя С#, разработку Mono и Monotouch.

Я использовал Monotouch.Dialog для создания функций, аналогичных настройкам Wi-Fi на iPhone. Я использую StyledStringElement с аксессуаром и теперь пытаюсь отличить касание строки от касания DetailDisclosureButton.

Я обнаружил, что должен переопределить UITableViewDelegate.AccessoryButtonTapped в UITableView. Я попытался создать производный класс от UITableViewDelegate и подключить его к Monotouch.Dialog. Но тут я застрял. Мне не удалось заменить существующий UITableViewDelegate моей расширенной версией.

Итак, мои вопросы:

  1. Является ли это предпочтительным способом обработки этого события (чтобы иметь возможность различать нажатие на элемент и нажатие на DetailDisclosureButton)?

  2. Если нет, какой-нибудь указатель на то, как это сделать?

  3. Я искал в Интернете (похожий) пример, но пока не нашел. Какие-нибудь примеры, которые вы знаете, могли бы заставить меня начать?

Спасибо,

борис


person Boris Rogge    schedule 09.07.2011    source источник


Ответы (1)


event EventHandler accessoryPushed;
public override void AccessoryButtonTapped (UITableView tableView, NSIndexPath indexPath)
{
if(!accessoryPushed)
{
    accessoryPushed(this,EventArgs.Empty);
}


}

Вам нужно будет добавить это в код DailogViewController, который вы используете (это переопределит действие касания). Вместо простой функции вы можете захотеть запускать событие, поэтому просто обработайте событие в своем основном коде. Это, вероятно, ваш лучший выбор.

Как только вы измените эту строку, вам придется реализовать новые функции, такие как AccessorySelected (просто имитируйте путь, по которому следует код, когда выбрана строка, за исключением аксессуара).

С другой стороны, вы можете попробовать другой метод навигации, часто кнопки раскрытия раздражают, и вы не хотите нажимать на них, кроме как для получения простой информации о кнопке (например, функции справки).

Я не нашел других примеров, извините!

person Kiran    schedule 11.07.2011
comment
Значит, это не ответ? - person Kiran; 10.08.2011