UITableView表格式圖,IOS開發中使用非常廣泛的一個控件,繼承自UIScrollView。
一:初始化
- (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style;
typedef NS_ENUM(NSInteger, UITableViewStyle) {
UITableViewStylePlain,//和筆記本似的,有橫線直角,如果數據少于tableView的高,下面會顯示空白行。
UITableViewStyleGrouped//頂部會顯示view
};
如果不想顯示下面的空白格,設置tableView.tableFooterView= [[UIViewalloc]initWithFrame:CGRectZero];
如果不想顯示系統默認的分割線,設置tableView.separatorStyle=UITableViewCellSeparatorStyleNone;
如果不想顯示cell選中顏色,設置cell.selectionStyle=UITableViewCellSelectionStyleNone。
二:Cell
UITableViewCell(視圖控件),tableView中每一行都是一個UITableViewCell對象,是tableView上的一個組成段元。系統提供的cell樣式是比較局限的,不能完全滿足多樣化的開發需求。系統提供的UITableViewCell的樣式是title、subTitle左側可以顯示image(比較簡單)。
UITableView 對cell的重用機制:一般情況下,tableView最多會創建一屏+1個cell。tableView對cell的重用機制,能夠最大限度的節省程序的內存開銷,提高程序的運行效率,在開發中具有非凡的借鑒意義。tableView本身帶有一個cell的可重用隊列,滑出屏幕的cell,先到可重用隊列中。從屏幕中即將出現的cell,先根據cell的可重用標識符去重用隊列中拿已經存在的cell。
為了實現cell的多樣化,一般通過繼承UITableViewCell,得到子類,對子類進行視圖控件的添加和功能的擴展(根據需求,定制cell)。繼承UITableViewCell,根據需求,向cell中添加所需的視圖控件. 還需要將數據填充到cell的各個控件中
用xib實現UITableViewCell定制
1、繼承UITableViewCell創建一個cell的類
2、創建一個名為AppCell的空的Xib
3、控件拖拽一個UITableViewCell到xib中
4、去掉autolayout,opensin 改成xcode4.6
5、filesOwner 在代碼中指定
6、選中xib中的tableViewCell,在class中將默認的UITableViewCell改成AppCell
7、向AppCell拖拽所需的控件,并設置好控件的屬性
8、將需要重新賦值的控件與AppCell.h相關聯
9、選中AppCell 設置cell的可重用標識符
//View從xib中加載不會調到initWithFrame方法
//View從xib中加載,會觸發initWithCoder方法,如果想讓View從xib中加載,子控件是通過代碼的方式來添加到View中,那么創建和添加子控件的過程寫在 initWithCoder中(重要)。
原生代碼自定義cell
創建一個繼承自UITableViewCell的cell即可。
自定義的tableViewCell,有時自定義的分割線會部分顯示,解決方案simulator -> debug -> optimize rendering for window scale取消打勾就好。
三:代理
UITableView 不同于以前我們使用的控件,我們需要使用代理設置它的顯示的數值。
tableView.delegate = self;
tableView.dataSource = self; //這個代理是管理數據的
四:NSIndexPath
NSIndexPath 作為行所在位置的描述類,indexPath.section,indexPath.row 分別帶有行所在分區和分區中的第幾行 (行的位置的信息)
indexPath.sectionsection段,indexPath.rowrow行
五:如何做一個Flicker(橫向的tableView)
繼承UIScrollView,重新寫一個UITableView
六:如何做瀑布流WaterFlowView
放三個UITableView,聯動滾動
七:
刷新數據后設置從頭顯示,[self.storeTableView setContentOffset:CGPointMake(0,0)];