開題
在很多時候感覺嘛,做iOS開發其實很簡單嘛,除了UI就是UI,好像看不出還有什么需要做的功能。在蘋果的iOS系統上面使用一款應用,就會有一種簡約的感受,因為在用戶體驗上蘋果爸爸已經幫你優化得很好了。
作為一名iOS狗,除了跪舔各種蘋果的logo外,還有就是享受自己設計的愛屁屁了....今天無聊就想說點自己對代碼的看法吧
關于UITableView
在iOS開發的頁面布局中,見的最多的就是UITableView這貨了,掌握了這貨,可以說是能勝任百分之七十的開發工作,剩下的百分之三十那就是iOS開發里最難的了,哈哈哈
在習慣使用StoryBoard來做頁面布局的時候,往頁面中拖入一個UITableView那是相當快的。然而有時候就是要你手擼一個UITableView出來,這時候就尷尬了啊,想個半天沒下手,因為不知道從何下手,真是尷尬。不得已老老實實的回顧一下如何創建一個UITableView出來了,自己也手擼了
腦子里的想著如何設計的
先說說UITableView的一些不能忽視的內容,敲黑板了啊敲黑板了啊,UITableView最重要的是一個數據源和一個代理,數據源(UITableViewDatasource)是用來設計UITableView的內容的,類似控制著多少行數據啊,每行數據怎么顯示的啊之類的,代理方法(UITableViewDelegate)這是做一些頁面交互的操作等,還有調整頁面的顯示樣式的,類似表頭啊什么的
要在一個頁面上顯示出一個UITableView,首先的創建UITableView嘛,在哪創建,在頁面初始化的地方創建,在ViewController的viewDidLoad方法里面給UITableView做初始化,然后給當前的ViewController設置成為UITableView的代理,
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStylePlain];
_tableView.dataSource = self;
_tableView.delegate = self;
[self.view addSubview:_tableView];
成為了代理,那就要實現相應的代理方法。先是針對數據源的代理,我們需要一個數據源,一般來說都是以數組NSArray的形式作為_tableView的數據源,里面存儲這_tableView要顯示的數據。對數據源我們至少要實現兩個方法,一個是
- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section {
return dataArray.count;
}
一個是關于每行cell的相關設置的
- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
static NSString *cellID =@"testCell";
UITableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:cellID];
if(!cell) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
}
//從數據源中取數據來顯示
NSString *title = dataArray[indexPath.row];
cell.textLabel.text= title;
return cell;
}
在這個方法里,我們就是從數據源里面取出相關的數據來顯示_tableView的內容的。
簡單的tableView就算創建出來了,靈活就在我們怎么面對復雜的數據源的處理,如何處理,或者從一個頁面把數據源傳遞到另一個頁面去顯示,這些就是我們需要控制的地方了?;蛘呶覀兛梢試L試著封裝一個頁面,只需要傳遞一個數組到目標頁面,把接收到的數組設置為tableView的數據源,然后調用一下tableView的刷新方法,就可以顯示出我們想要的數據了。
總結一下
寫的這點東西只是腦子里回顧一下如何創建一個tableView并顯示出來。習慣了復制和粘貼,在我們的腦子里只是存著方法,卻沒存著自己的代碼,等到需要用的時候還是要去查找一遍,那就太浪費時間了。作為一個有目標的iOS狗,還是給自己點時間來補充點狗糧比較好。