#ios #xamarin.ios #monotouch.dialog
#iOS #xamarin.ios #monotouch.dialog
Вопрос:
Я RootElement
объявил и настроил, как я хочу, на DialogViewController
, используя element-based API
вместо reflection API
. Выглядит великолепно.
Однако я изо всех сил пытаюсь понять, как я могу получить значения. Используя API на основе отражения, это легко, но я не вижу, как я могу использовать BindingContext.Fetch()
с явно объявленным RootElement
.
Я не могу найти пример в примерах, и я не могу понять, как это сделать сам.
var root = new RootElement(null){
new Section(){
new StringElement("Title here"),
new FloatElement(null, null, 5f)
}
};
var dv = new DialogViewController(root, true);
dv.ViewDisappearing = delegate {
// what goes here to get at the value of the FloatElement?
};
NavigationController.PushViewController(dv, true);
Любая помощь приветствуется.
Комментарии:
1. Разве вы не могли бы просто обойти свой root, чтобы найти нужный элемент, а затем использовать его свойство Value для получения значения?
2. Это то, что я подумал. Но нет способа однозначно отличить один элемент FloatElement от другого. Итак, я решил это, добавив свойство Key к элементу, позволяющее коду обхода однозначно идентифицировать конкретный элемент.
Ответ №1:
Вы можете сохранить это в переменной, которая ограничена областью, в которой ваш анонимный метод может получить к ней доступ.
Вот так:
var floatElement = new FloatElement(null, null, 5f);
var root = new RootElement(null){
new Section(){
new StringElement("Title here"),
floatElement,
}
};
var dv = new DialogViewController(root, true);
dv.ViewDisappearing = delegate {
//You can access floatElement here
Console.WriteLine(floatElement.Value);
};
NavigationController.PushViewController(dv, true);
Комментарии:
1. Хороший способ справиться с этим, хотя вы частично теряете приятный стиль инициализатора C # 3.0. Отмечен как ответ, потому что это работает, даже если это не то, что я в конечном итоге делал. (Смотрите Мой комментарий к другому ответу)
2. Imo лучшее решение. В качестве альтернативы, сохранить все элементы в списке и отслеживать индексы? Просто предложение, если вам нужно обработать много элементов.