您好,登錄后才能下訂單哦!
UITableView的使用
今天凌晨,蘋果召開2015年新品發布會。iPhone6s和iPhone6s Plus,以及iPad Pro、新Apple TV會與我們見面,據悉,iPhone 6s與iPhone6s Plus將會在9月18日正式發售。
表格視圖控制器,它是一個是視圖控制器的對象管理一個表視圖。
一個iphone表格由三種東西構成:一個視圖,一個數據源和一個委托。
數據源:它是用于管理可見的UITableview及其數據之間關系-UITableviewDataSource協議中的方法提供表格的區域,行數,頂部和底部的標題,以及每個單元格的內容等。其中有兩個方法必須實現:tableView:numberOfRowsInSection:和tableView:cellforRowAtIndexPath:
委托:控制表格的視覺外觀和行為-UITableviewDelegate協議的對象會收到從多用戶活動的通知,如選擇一個單元格,編輯單元格等操作。通常我們需要實現tableView:didSelectRowAtIndexpath:
數據源方法:
//不重寫默認返回1
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
//在tableview一個區域顯示多少行
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [dataSourceArray count];
}
//填充數據
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// addMovies = [[Movie alloc]init];
// addMovies.movieName = avcc.Addmovies.movieName;
// addMovies.movieMoney = avcc.Addmovies.movieMoney;
// addMovies.movieDescription = avcc.Addmovies.movieDescription;
// [dataSourceArray addObject:addMovies];
static NSString* Cellidentifer = @"cell";
//cell的重用
// UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:Cellidentifer];
//系統
// addMovies.movieName =
MyCell* cell = [tableView dequeueReusableCellWithIdentifier:Cellidentifer];
//自定義
if (cell==nil) {
//初始化一個cell
//這里的style是一個枚舉
cell = [[MyCell alloc]initWithStyle:0 reuseIdentifier:Cellidentifer];
//這里是在最后面加一個->
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
NSLog(@"%@",[dataSourceArray objectAtIndex:indexPath.row]);
// cell.textLabel.text = [dataSourceArray objectAtIndex:indexPath.row];
Movie* movie = [dataSourceArray objectAtIndex:[indexPath row]];
// NSString* strMoney = [NSString stringWithFormat:@"%d",movie.movieMoney];
NSLog(@"%d",[indexPath row]);
NSLog(@"%@",[dataSourceArray objectAtIndex:[indexPath row]]);
cell.Moviep_w_picpath.p_w_picpath = [UIImage p_w_picpathNamed:movie.movieImage];
cell.MovieMoney.text = movie.movieMoney;
cell.MovieName.text = movie.movieName;
cell.MovieDescription.text = movie.movieDescription;
return cell;
}
單元格重用機制
//填充數據
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// addMovies = [[Movie alloc]init];
// addMovies.movieName = avcc.Addmovies.movieName;
// addMovies.movieMoney = avcc.Addmovies.movieMoney;
// addMovies.movieDescription = avcc.Addmovies.movieDescription;
// [dataSourceArray addObject:addMovies];
static NSString* Cellidentifer = @"cell";
//cell的重用
// UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:Cellidentifer];
//系統
// addMovies.movieName =
MyCell* cell = [tableView dequeueReusableCellWithIdentifier:Cellidentifer];
//自定義
if (cell==nil) {
//初始化一個cell
//這里的style是一個枚舉
cell = [[MyCell alloc]initWithStyle:0 reuseIdentifier:Cellidentifer];
//這里是在最后面加一個->
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
NSLog(@"%@",[dataSourceArray objectAtIndex:indexPath.row]);
// cell.textLabel.text = [dataSourceArray objectAtIndex:indexPath.row];
Movie* movie = [dataSourceArray objectAtIndex:[indexPath row]];
// NSString* strMoney = [NSString stringWithFormat:@"%d",movie.movieMoney];
NSLog(@"%d",[indexPath row]);
NSLog(@"%@",[dataSourceArray objectAtIndex:[indexPath row]]);
cell.Moviep_w_picpath.p_w_picpath = [UIImage p_w_picpathNamed:movie.movieImage];
cell.MovieMoney.text = movie.movieMoney;
cell.MovieName.text = movie.movieName;
cell.MovieDescription.text = movie.movieDescription;
return cell;
}
UITableView中顯示的每一個單元都是一個UITableview對象,它的初始化函數initWithStyle:reuseIdentifier:比較特別,跟我們平時看到的UIView的初始化函數不同。這個主要是為了效率考慮,因為在tableview快速滑動的過程中,頻繁的alloc對象是比較費時的,于是引入cell的重用機制,這個也是我們在打他source中要重點注意的地方,用好重用機制會讓我們的tableView滑動起來更加流暢。
static NSString* Cellidentifer = @"cell";
定義一個靜態字符串常量,用于指定cell的標示符.
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:Cellidentifer];
從表格視圖中獲取帶標示符的空閑(未顯示)的cell,如果有則獲得cell,否則cell為nil;
if (cell==nil) {
//初始化一個cell
//這里的style是一個枚舉
cell = [[MyCell alloc]initWithStyle:0 reuseIdentifier:Cellidentifer];
//這里是在最后面加一個->
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
如果從表格視圖中獲取不到可用的cell,則alloc出一個新的cell,并設置標示符。
UITableViewCell
單元格顯示類型:
typedef enum{
UITableViewStyleDefault; à0
UITableViewCellStyleValue1; à1
UITableViewcellStyleValue2; à2
UITableViewCellStyleSubtitle; à3
}
單元格的輔助圖標類型
//這里是在最后面加一個->
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
編輯單元格(增,刪,移動)
1. 設置tableview的編輯模式:
選中單元格—>進入二級視圖進行修改信息
更新單元格內容
需要先引入協議
分段按鈕實現
自定義單元格
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。