uitableview - Update textfield after a row is selected in tableview Xamarin.IOS -


here scenario encountering. having login screen username 1 of fields. user can select user using dropdown list (implemented via button - simulate drop down arrow, popover controller , table view). having controller (usernamecontroller) has logic of fetching usernames , binding same table view within it. usernamecontroller called via viewcontroller.cs has textfield , dropdown button using below code:

var content = this.storyboard.instantiateviewcontroller("usernamelookup") usernamecontroller;             uipopovercontroller popover = new uipopovercontroller(content);              //popover.setpopovercontentsize(new sizef(80, 80), true);              popover.presentfromrect(new rectanglef(float.parse((sender.frame.x + 115).tostring()),                                                    float.parse((sender.frame.y + 180).tostring())                                                    , 80, 80), view, uipopoverarrowdirection.up, true); 

and in usernamecontroller:

public override void viewdidload()         {             string[] username = new string[10];                  tblvwusername.source = new tablesource(username);             }         } 

and tabelsource.cs looks this:

public class tablesource : uitableviewsource     {         string[] tableitems;         string cellidentifier = "tablecell";          public tablesource(string[] items)         {             tableitems = items;         }          public override nint rowsinsection(uitableview tableview, nint section)         {             return tableitems.length;         }          public override uitableviewcell getcell(uitableview tableview, nsindexpath indexpath)         {             uitableviewcell cell = tableview.dequeuereusablecell(cellidentifier);             string item = tableitems[indexpath.row];              //---- if there no cells reuse, create new 1             if (cell == null)             { cell = new uitableviewcell(uitableviewcellstyle.default, cellidentifier); }              cell.textlabel.text = item;              return cell;         }          public override void rowselected(uitableview tableview, nsindexpath indexpath)         {             // how set username text field in viewcontroller? , close popup             tableview.deselectrow(indexpath, true);         }     } 

now how need display selected username in viewcontroller's textfield , close popup?

thanks! sid

i typically solve requirement properties on tableviewsource , tableviewcontroller. source change to:

public class tablesource : uitableviewsource {     string[] tableitems;     string cellidentifier = "tablecell";      public string selecteditem {get; set;}      public tablesource(string[] items)     {         tableitems = items;     }      public override nint rowsinsection(uitableview tableview, nint section)     {         return tableitems.length;     }      public override uitableviewcell getcell(uitableview tableview, nsindexpath indexpath)     {         uitableviewcell cell = tableview.dequeuereusablecell(cellidentifier);         string item = tableitems[indexpath.row];          //---- if there no cells reuse, create new 1         if (cell == null)         { cell = new uitableviewcell(uitableviewcellstyle.default, cellidentifier); }          cell.textlabel.text = item;          return cell;     }      public override void rowselected(uitableview tableview, nsindexpath indexpath)     {         selecteditem = items[indexpath.row];                      tableview.deselectrow(indexpath, true);     } } 

now need way value. there 2 possible ways:

1) usernamecontroller of type uitableviewcontroller, (content.tableview.source tablesource).selecteditem

2) usernamecontroller not of type uitableviewcontroller, add property returns property of tableviewsource.

last thing closing popover , query selected item. task wrap usernamecontroller in uinavigationcontroller , add cancel , done button this:

 var navigationcontroller = new uinavigationcontroller(content);  var popover = new uipopovercontroller(navigationcontroller);   content.navigationitem.setleftbarbuttonitem(new uibarbuttonitem(uibarbuttonsystemitem.cancel, (s, e) =>  {      parentcontroller.dismissviewcontroller(true, null);  }), true);  content.navigationitem.setrightbarbuttonitem(new uibarbuttonitem(uibarbuttonsystemitem.done, (s, e) =>  {      parentcontroller.dismissviewcontroller(true, null);       var selecteditem = (content.source tablesource).selecteditem;   }), true); 

Comments