UITableView的使用

今天凌晨,蘋果召開2015年新品發(fā)布會。iPhone6s和iPhone6s Plus,以及iPad Pro、新Apple TV會與我們見面,據(jù)悉,iPhone 6s與iPhone6s Plus將會在9月18日正式發(fā)售。
 
表格視圖控制器,它是一個是視圖控制器的對象管理一個表視圖。
一個iphone表格由三種東西構(gòu)成:一個視圖,一個數(shù)據(jù)源和一個委托。
數(shù)據(jù)源:它是用于管理可見的UITableview及其數(shù)據(jù)之間關(guān)系-UITableviewDataSource協(xié)議中的方法提供表格的區(qū)域,行數(shù),頂部和底部的標(biāo)題,以及每個單元格的內(nèi)容等。其中有兩個方法必須實現(xiàn):tableView:numberOfRowsInSection:和tableView:cellforRowAtIndexPath:
委托:控制表格的視覺外觀和行為-UITableviewDelegate協(xié)議的對象會收到從多用戶活動的通知,如選擇一個單元格,編輯單元格等操作。通常我們需要實現(xiàn)tableView:didSelectRowAtIndexpath:
數(shù)據(jù)源方法:
//不重寫默認(rèn)返回1
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
//在tableview一個區(qū)域顯示多少行
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [dataSourceArray count];
}
//填充數(shù)據(jù)
-(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];
//系統(tǒng)
// 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;
}
單元格重用機(jī)制
//填充數(shù)據(jù)
-(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];
//系統(tǒng)
// 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對象,它的初始化函數(shù)initWithStyle:reuseIdentifier:比較特別,跟我們平時看到的UIView的初始化函數(shù)不同。這個主要是為了效率考慮,因為在tableview快速滑動的過程中,頻繁的alloc對象是比較費(fèi)時的,于是引入cell的重用機(jī)制,這個也是我們在打他source中要重點(diǎn)注意的地方,用好重用機(jī)制會讓我們的tableView滑動起來更加流暢。
static NSString* Cellidentifer = @"cell";
定義一個靜態(tài)字符串常量,用于指定cell的標(biāo)示符.
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:Cellidentifer];
從表格視圖中獲取帶標(biāo)示符的空閑(未顯示)的cell,如果有則獲得cell,否則cell為nil;
if (cell==nil) {
//初始化一個cell
//這里的style是一個枚舉
cell = [[MyCell alloc]initWithStyle:0 reuseIdentifier:Cellidentifer];
//這里是在最后面加一個->
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
如果從表格視圖中獲取不到可用的cell,則alloc出一個新的cell,并設(shè)置標(biāo)示符。
UITableViewCell
單元格顯示類型:
typedef enum{
UITableViewStyleDefault; à0
UITableViewCellStyleValue1; à1
UITableViewcellStyleValue2; à2
UITableViewCellStyleSubtitle; à3
}


單元格的輔助圖標(biāo)類型
//這里是在最后面加一個->
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;


編輯單元格(增,刪,移動)
1. 設(shè)置tableview的編輯模式:





選中單元格—>進(jìn)入二級視圖進(jìn)行修改信息


更新單元格內(nèi)容


需要先引入?yún)f(xié)議


分段按鈕實現(xiàn)




自定義單元格









另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
                當(dāng)前標(biāo)題:UITableView的使用-創(chuàng)新互聯(lián)
                
                URL標(biāo)題:http://chinadenli.net/article20/gcpjo.html
            
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站內(nèi)鏈、網(wǎng)站維護(hù)、網(wǎng)站排名、微信小程序、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
