(I ment _I_ need to learn F#) On 5 March 2013 22:35, Nic Wise <[email protected]> wrote: > 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/
-- 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
