Hello Miguel,

I followed the approach in your example of DemoEditingAdvanced (I updated
the Root and then called ReloadData).

In your example below (modified to illustrate the error) I try to trigger
the selected element when the rows are editing but it doesn't work.
Allthough it works without editing it.

Thank you,
_jmgomez_
Juan M Gómez

void AdvancedConfigEdit (DialogViewController dvc)

{

dvc.NavigationItem.RightBarButtonItem = new UIBarButtonItem
(UIBarButtonSystemItem.Edit, delegate {

// Activate editing

// Switch the root to editable elements

dvc.Root = CreateEditableRoot(dvc.Root, true);

dvc.ReloadData();

// Activate row editing & deleting

dvc.TableView.SetEditing (true, true);

AdvancedConfigDone(dvc);

} );

}

void AdvancedConfigDone (DialogViewController dvc)

{

dvc.NavigationItem.RightBarButtonItem = new UIBarButtonItem
(UIBarButtonSystemItem.Done, delegate {

// Deactivate editing

dvc.ReloadData();

// Switch updated entry elements to StringElements

dvc.Root = CreateEditableRoot(dvc.Root, false);

dvc.TableView.SetEditing (false, true);

AdvancedConfigEdit (dvc);


} );

}

RootElement CreateEditableRoot (RootElement root, bool editable)

{

    var rootElement = new RootElement("Todo list") {

new Section()

} ;

foreach (var element in root[0].Elements) {

if(element is StringElement) {

rootElement[0].Add(CreateEditableElement (element.Caption,
(element as StringElement).Value, editable));

}  else {

rootElement[0].Add(CreateEditableElement (element.Caption,
(element as StringElement /*I'M ADDING THIS */).Value, editable));

}

}

    return rootElement;

}

Element CreateEditableElement
(string caption, string content, bool editable)

{

return new StringElement(caption,
()=>{new UIAlertView("","",null,"").Show();}); //I'M ALSO ADDING THIS


if (editable) {

return new EntryElement(caption, "todo", content);

}  else {

return new StringElement(caption, content);

}


}


Juan M Gómez Álvarez


2012/11/5 Miguel de Icaza <[email protected]>

> Your approach would only work if you reload the entire tree (call
> CreateEditableCourts again, and replace the root with the new value).
>
> Miguel
>
> On Sun, Nov 4, 2012 at 10:56 AM, Juan Manuel Gómez Álvarez <
> [email protected]> wrote:
>
>> Hello,
>>
>> I´m using MonoTouch.Dialog to make an editable ViewTable like the Alarm
>> app. I use two different Element, one when I don't edit (RadioElement) and
>> another when I am in edit mode (StringElement).
>>
>> private RootElement CreateEditablCourts (bool editable=false)
>>
>>  {
>>
>>
>>   var root = editable? new RootElement("Juzgados") : new RootElement(
>> "Juzgados",new RadioGroup(-1));
>>
>>  var section = new Section ();
>>
>>  var courts = lawerData.getAllCourts();
>>
>>  foreach (var c in courts) {
>>
>>   var court = c;
>>
>>   section.Add(CreateEditableElement(court.Location,editable));
>>
>>  }
>>
>>  root.Add(section);
>>
>>
>>   return root;
>>
>>  }
>>
>>
>>  private Element CreateEditableElement (string caption, bool editable =
>> false)
>>
>>  {
>>
>>  if (editable)
>>
>>   return new StringElement (caption, () => {
>>
>>   new UIAlertView ().Show ();}); //NEVER TRIGGER
>>
>>
>>   var radioElement = new RadioElement(caption,string.Empty);
>>
>>  radioElement.Tapped+= () => {
>> new UIAlertView ().Show ();  //WORKS
>>
>>  } ;
>>
>>
>>   return radioElement;
>>
>>
>>  }
>>
>>
>> Thanks in advance,
>> _jmgomez_
>> Juan  M Gómez
>>
>>
>> _______________________________________________
>> MonoTouch mailing list
>> [email protected]
>> http://lists.ximian.com/mailman/listinfo/monotouch
>>
>>
>
_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch

Reply via email to