2011年2月7日 星期一

UITableView簡說 I

UITableView係一個非常之有用的component;你平時玩的Apps,好多都係用左佢來做!


要做一個有UITableView的實驗Apps:



選擇Navigation-Based Application:




在Resources內,已經預設了個RootViewController.xib內有個UITableView。當然,沒有的話你可以自己在Interface Builder內加入UITableView。




值得留意是numberOfRowsInSection這個方法:


它的return type是NSInteger,即是一個Section內有幾多個橫項。

另一個焦點是cellForRowAtIndexPath方法的實作:


每當個UITableView要顯示一個cell時,個方法都會被call一次,目的是拿取某個cell的資料或對cell的visual customization。

同時,你可見到code內的CellIndentifier,用途是重用已被配置的cell resources。這可提升使用效能。因為當cell數目太多時,每alloc一個cell,記憶體就用多了...而且,iPhone的screen size有限(跟desktop比),同一時間show晒cell的機會好少。

另外,indexPath是代表你正處理那一個cell的資料,即indexPath.row。你可看看row的數值是什麼,例如第一個row是0,第二個是1等等...


當某某cell被按下時,我們要跳去另一畫面,又怎handle?請參考didSelectRowAtIndexPath。


跟cellForRowAtIndexPath原理相同,indexPath代表第幾個cell被select了,都可以由indexPath.row內找到,由0到n-1個cell。如果現在的view controller係under另一個navigation controller,你可以直接把新的view controller加到現有的navigation controller。此外,你亦可使用presentModalViewController等方法顯現新的view controller。



沒有留言:

張貼留言