欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

UITableView 系列三 :分類顯示和改變外觀 (實

系統 2616 0

1. 分類顯示 sections

?

?

在之前的文章 UITableView 的資料設定方式 一文中,已經示范如何在 UITableView 中設定所要顯示的資料,以及分別顯示這些資料的細節,但是如果資料比數太多時該怎么辦?你可以參考本篇文章的做法,將資料做分類的處理,并且建立快速索引,讓使用者能以最短的時間找到所需要的資料。

資料分類的概念
動態表格的內容多半是存放在陣列當中方便資料的存取,如果你有好幾類不同比的資料,你可以將這些資料分別存放在不同的陣列里,最后再使用一個 NSMutableArray 將這些存放不同資料的陣列包起來,之后我們只要針對這個 NSMutableArray 做操作即可。(以下是沿用之前文章的程式碼做修改)

    //資料初始化
roleArray = [[NSArray alloc] initWithObjects:@"野蠻人", @"法師", @"弓箭手", @"盜賊", @"德魯伊", @"騎士", nil];
monsterArray = [[NSArray alloc] initWithObjects:@"哥布林戰士", @"哥布林護衛", @"哥布林軍官", @"哥布林王", @"黑暗德魯伊", @"狼人", @"傀儡護衛", @"傀儡領主", @"蜘蛛", @"蝙蝠", nil];

heroicaArray = [[NSMutableArray alloc] initWithObjects:roleArray, monsterArray, nil];
  

?
UITableView Sections 的設定
如果要將資料作分類顯示,可以使用以下的內建方法函式,并回傳一個 NSInteger,告訴 UITableViewController 你想將資料分成幾類。

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [heroicaArray count];
}
  

?
程式碼到此就已經算是完成資料的分類,后續的動作就是要顯示這些分類好的資料,大致的程式碼都和之前的文章差不多,只是操作的物件不同,可以透過方法函式所得到的 section 參數,決定于目前是要處理那一類的資料。

    //設定每一類的資料筆數
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [[heroicaArray objectAtIndex:section] count];
}
  
    //設定每一類的資料內容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

//制作可重復利用的表格欄位Cell
static NSString *CellIdentifier = @"CellIdentifier";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

//設定欄位的內容與類型
cell.textLabel.text = [[heroicaArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
return cell;
}
  

??
分類標題與快速索引
分類的標題可以家在分類的開頭或是結尾,同樣是透過方法函式所得到的 section 參數,來確認目前所在的分類。

    //設定分類開頭標題
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
switch (section) {
case 0:
return @"英雄角色";
break;

case 1:
return @"怪物角色";
break;

default:
return @"";
break;
}
}

//設定分類結尾標題
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {
}
  

?

另外,建立類似電話簿的快速索引,則可以透過下列內建方法函式,回傳一個快速索引的陣列,陣列內容的順序,就是你分類的順序。

    //建立快速索引
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
NSArray *index = [[NSArray alloc] initWithObjects:@"英雄", @"怪物", @"武器", @"道具", @"戰利品", @"其他", nil];
return index;
}
  

?
比較好的做法
在上述分類標題與快速索引的部分,使用 switch 與靜態的數值來做設定,其實這不是很恰當的做法,尤其當你的資料筆數非常龐大的時候,比較好的建議是將這些資訊同樣放入陣列里面,且動態存取它們,來完成設定標題與建立索引陣列。

另外要注意的是,雖然是好幾類不同的資料,但是他們最好還是能擁有相同的屬性,即使該屬性為 nil。例如 A 類型的資料有顏色屬性,但是 B 類型沒有或是不需要,但是仍需為 B 類型的資料保留顏色屬性,即使它們的值都是 nil,這樣的觀念有點類似于多型 Polymorphism,這樣不但可以減少程式碼的撰寫,對于表格內的資料也能保持一致性。

?

?

2. 改變外觀

?

?

UITableView 所制作出來的應用程式在使用上多半大同小異,它們之間最大的不同還是在表格的呈現方面,如何設計出具有獨特外觀的 UITableView,才是令人頭痛的問題,通常是選擇制作一個全新的 UITableViewCell 來使用,但是你也可以採用比較簡單的做法,使用內建的方法函式來做些微的改變,方式如下。

Table View
整個 Table View 能改變的東西實在不多,多半都是更改背景,但是當你更改背景顏色之后就會發現 Cell 與 Cell 之間會多出一條白線 Separator,你可以參考下列程式碼改變它的顏色或是移除不顯示。

    //改變Separator顏色
[self.tableView setSeparatorColor:[UIColor orangeColor]];

//移除Separator
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
  

?
Table View Cell
Table View Cell 本身就提供一些不同的類型可供選擇,如下圖,你可以藉由選擇不同的類型來改變文字在 Cell 中編排的方式。


?
Attributes 中的 Style 屬性

另外如果想要在 Cell 中增加其它元件時,可以使用 addSubview 的方法函式來添加新的元件,例如在下列程式碼中,除了設定左右的圖像之外,還自行新增了一個 UILabel 放在其中。

    //設定文字背景為透明
[cell.textLabel setBackgroundColor:[UIColor clearColor]];

//設定Cell中左邊的圖片
cell.imageView.image = [UIImage imageNamed:[[heroicaArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row + 1]];

//設定Cell中右邊的連結圖片
cell.accessoryView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"dice.png"]];

//增加UILabel
UILabel *subtitle = [[UILabel alloc] initWithFrame:CGRectMake(95.0, 45.0, 200.0, 20.0)];
[subtitle setTextColor:[UIColor colorWithHue:1.0 saturation:1.0 brightness:1.0 alpha:0.5]];
[subtitle setBackgroundColor:[UIColor clearColor]];
[subtitle setFont:[UIFont systemFontOfSize:12.0]];
[subtitle setText:@"還可以放注解唷"];

[cell addSubview:subtitle]; 

//設定背景
[cell setBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"CellBG.png"]]];
  

?
Section
透過下列內建的方法函式,可以自行更改 Section 的標題內容。

    //設定開頭的分類樣式
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView *sectionView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)];
[sectionView setBackgroundColor:[UIColor brownColor]];

//增加UILabel
UILabel *text = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 18)];
[text setTextColor:[UIColor blackColor]];
[text setBackgroundColor:[UIColor clearColor]];
[text setText:[[heroicaArray objectAtIndex:section] objectAtIndex:0]];
[text setFont:[UIFont boldSystemFontOfSize:16.0]];

[sectionView addSubview:text];
return sectionView;
}

//設定結尾的分類樣式
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
}
  

?
Section Index
表格分類的快速索引雖然沒有內建的方法函式可供設定外觀使用,但是你仍然可以透過自制的索引介面并配合下列程式碼,將表格切換到所想要的分類上。

    CGRect sectionRect = [self.tableView rectForSection:1];
[self.tableView scrollRectToVisible:sectionRect animated:YES];
  

?
備註
如果表格個對應的資料結構有任何問題,可以在「索引式搜索」中的「元件設定」分類里找到所有有關 UITableView 的 文章 ,查閱其他有關表格的設定方式。

?

?

來源:

http://furnacedigital.blogspot.com/2012/02/uitableview-sections.html

http://furnacedigital.blogspot.com/2012/02/uitableview_17.html

?

?

?

?

UITableView 系列三 :分類顯示和改變外觀 (實例)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 偷拍做爰吃奶视频免费看 | 免费男女视频 | 国产一起色一起爱 | 久热草视频 | 久草久草久草 | 国产精品视频一区二区三区 | 亚洲成人网在线观看 | 99久久国产综合精品女小说 | 无码一区二区三区曰本A片 欧美综合激情网 | 色欲天天婬色婬香视频综合网 | 久久这里只有精品9 | 亚洲一级免费视频 | 日本亚洲一区 | 免费播放欧美一级特黄 | 欧美激情啪啪 | 手机国产日韩高清免费看片 | 好大好爽快点视频 | 精品久久综合一区二区 | 九九九久久国产免费 | 亚洲成人国产综合 | 日本一区二区三区不卡在线看 | 亚洲9777精品毛A片久久久 | 免费看成年人网站 | 国产在线观看一区二区三区 | 久热香蕉精品视频在线播放 | 91精品久久久久久久久久 | 看亚洲a级一级毛片 | 免费高清伧理片午夜伧理片 | 91精品国产91久久久久久 | 亚洲网站在线观看 | 91视频.com| 免费看欧美成人性色生活片 | 91网站在线看 | 色偷偷影院 | 亚州第一视频 | 成人片免费看 | 久久精品视频免费 | 波多野结衣亚洲一区 | 欧美一级α | 婷婷色基地 | 97久久国语露脸精品对白 |