Hi Nick :) I'm using "foreach" version inside my project, in the example here I was testing out what happens with my code, because as you said, i had a problem with always showing the latest element :D
Thx for help! On Mar 5, 2013, at 10:31 PM, Nic Wise <[email protected]> wrote: > Hi Iki > > for (int i = 0; i < newsList.Count; i++) > { > StringElement se = new StringElement(newsList[i]); > section.Add(se); > > int localCounter = i; //grab it, 'cos you want to use it > inside the lamda, and "i" may have the wrong scope > se.Tapped += () => > { > //DialogViewController with modified ctor (string name) > DetailViewController dvc = new > DetailViewController(newsList[localCounter]); //use the local one > this.NavigationController.PushViewController(dvc,true); > }; > > stringElementsList.Add(se); //you dont need this, you are > storing it in the section above! > } > > you might not need the localCounter bit (you might just be able to use > i) - try it out. If it always shows the last element, regardless, then > use the localCounter bit. I know you need to do this for objects, just > not 100% sure on value types :) > > you could rewrite it like this, too: > > > > newsList = new List<string>() > { > "News - 1" > ,"News - 2" > ,"News - 3" > ,"News - 4" > }; > > foreach(var s in newsList) > { > > string temp = s; //capture outside, use inside the lambda/delegate > > section.Add(new StringElement(s, () => { > DetailViewController dvc = new DetailViewController(temp); > this.NavigationController.PushViewController(dvc,true); > }); > > > } > > > > > On 5 March 2013 20:37, Iki <[email protected]> wrote: >> Hey Juan, >> >> Thanks for such quick response, as a matter of fact, my approach was exactly >> like Your second solution. >> But along the way I have made a mistake while assigning a new >> DialogViewController, here is the example of working solution: >> >> public partial class MainViewController : DialogViewController >> { >> List<string> newsList; >> List<StringElement> stringElementsList; >> >> public MainViewController () : base (UITableViewStyle.Grouped, null) >> { >> >> Root = new RootElement ("Main View") {}; >> Section section = new Section (""); >> >> >> newsList = new List<string>() >> { >> "News - 1" >> ,"News - 2" >> ,"News - 3" >> ,"News - 4" >> }; >> >> stringElementsList = new List<StringElement> (){}; >> >> for (int i = 0; i < newsList.Count; i++) >> { >> StringElement se = new StringElement(newsList[i]); >> section.Add(se); >> >> se.Tapped += () => >> { >> //DialogViewController with modified ctor (string name) >> DetailViewController dvc = new >> DetailViewController(newsList[se.IndexPath.Row]); >> this.NavigationController.PushViewController(dvc,true); >> }; >> >> stringElementsList.Add(se); >> } >> >> Root.Add (section); >> >> >> } >> } >> >> >> >> On Mar 5, 2013, at 8:11 PM, Juan M Gómez <[email protected]> wrote: >> >> Hi Iki, >> There are a few ways to go on: >> ->Just a specialized class of StringElement that exposes your properties or >> a new event. >> ->If you assign the data in the same struct, just use it (if it is a loop, >> remember to set a new assign in the block of lambda) >> >> cheers >> >> >> Juan M Gómez >> >> >> 2013/3/5 Iki <[email protected]> >>> >>> Hi guys/gals, >>> >>> I'm having trouble accessing MonoTouch Dialog elements. >>> >>> Example is: >>> >>> I have a list of items from which i create StringElements in section. >>> After elements is tapped, i would like to go to a new view, on which i >>> would, based on the element tapped filled out the data. >>> >>> StringElement.Tapped is without parameters, >>> >>> se.Tapped += () => >>> { >>> >>> >>> }; >>> >>> and i can't find a proper way to send reference of the object that is >>> tapped. >>> >>> I'm currently using DialogViewControllers, for my main view, on which i >>> create list of name, and on my detail view which i need to fill up with data >>> based on element from the main view. >>> >>> I did try with this >>> >>> public void RowSelected (UITableView tableView, NSIndexPath indexPath) >>> { >>> DetailViewController dvc = new DetailViewController (names >>> [indexPath.Row]); >>> this.NavigationController.PushViewController (dvc, true); >>> } >>> >>> But I don't see any effect. >>> >>> Thanks! >>> >>> >>> >>> _______________________________________________ >>> MonoTouch mailing list >>> [email protected] >>> http://lists.ximian.com/mailman/listinfo/monotouch >>> >> >> _______________________________________________ >> MonoTouch mailing list >> [email protected] >> http://lists.ximian.com/mailman/listinfo/monotouch >> >> >> >> _______________________________________________ >> MonoTouch mailing list >> [email protected] >> http://lists.ximian.com/mailman/listinfo/monotouch >> > > > > -- > Nic Wise > t. +44 7788 592 806 | @fastchicken > b. http://www.fastchicken.co.nz/ _______________________________________________ MonoTouch mailing list [email protected] http://lists.ximian.com/mailman/listinfo/monotouch
