IOS UITableView

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)];

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容