ios之基礎tableview的問題總結

這兩天一直在做頭分給的任務,廢話不多說,問題總結:

1.如果有一個Button在一個tableView的cell中,我如何通過點擊button獲得cell的指針?

通過button事件,裏面有一個event對象,記錄了當前點擊座標,然後通過座標能夠找到所屬的cell

NSSet *touched=[event allTouches];
    UITouch*touch=[touched anyObject];
    CGPoint cure=[touch locationInView:self.tableView];
    NSIndexPath *indexPath=[self.tableView indexPathForRowAtPoint:cure];
2.什麼時候應該用didSelectedRowAtIndex方法:

如果要整行cell觸發點擊事件的話,就用到此函數方法

3.哪些控件具有內置的觸摸事件處理機制:

因爲另外一些並不具有這些機制,如果想獲得觸摸的效果必須手動添加手勢。

繼承UIControl的控件,UIContorl的控件和一般view最大區別是他實現了一套事件機制,所以萬不得已才用手勢,否則就用UIControl的子類。

UIControl所有的子類:

UIButton UIdatepiceker UIpagecontrol UIsegmentedcontrol UItextfield UIslider UIwitch
經常用到的是UIButton UItextfield UIslide UIwitch

這些控件具有內置觸控事件,開發控件並支持觸控事件的話就從UIControl繼承,而不是UIView.

4.UITableView的基類:

UIScrollview它支持滾動

5.UIScrollview的子類有哪些:

UITableVIew和UITextview UICollectionView

UIControl和UIScrollView的子類佔了ios控件類的大部分

6.UITableView中UITableVIewDataSource中必須實現的協議函數是哪些:

CellRowAtIndex和NumberOfRowsInsection

可以在xode中,右鍵查看定義,轉到類聲明處,然後 查看@required下面是必須要實現的@optional下面是按需實現的

7.對於UITableView來說更新整個表的內容用哪個函數,更新某一個cell的內容要用哪個函數

更新整個表的是reloadData

更新某一個cell的內容是reloadRowsAtIndexPaths

8.如何創建一個IndexPath對象

NSIndexPath*indexPath = [NSIndexPath indexPathForRow:0 inSection:0];

這個函數很特別,因爲它是聲明在UITableView.h中,而不是IndexPath.h中的僅對UITableView有用

9.補充一下內存管理:

如果一個類似一個XXXXDelegate作爲成員變量,請使用@property(nonautomic,weak)UITableVIewDelegate*delegate;

防止循環引用。

繼續寫demo去了。。。。。。。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章