這兩天一直在做頭分給的任務,廢話不多說,問題總結:
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去了。。。。。。。