Thanks. Instapapered. Need to learn F#, too :)
On 5 March 2013 21:54, Juan M Gómez <[email protected]> wrote: > Yes, it's clousure stuff. If you want you can see why that happens here: > http://www.defmacro.org/ramblings/fp.html#part_11 although I recommend the > whole article for everybody, it's pretty nice. > > > > > 2013/3/5 Nic Wise <[email protected]> >> >> 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 > -- 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
