iOS學習筆記——表視圖四(分組分區)

來源:互聯網
上載者:User

對錶視圖進行分組與分區,便於使用者對資訊的尋找。首先需要建立.plist的檔案,包含所有的資訊,便於表視圖載入過程中資料的錄入。用字典儲存,以數組的方式擷取表視圖的資料。遵循UITableViewDelegate協議實現對錶視圖的分區。

首先添加、編寫.plist檔案,寫入資料,也可匯入:



在.h檔案中添加協議,建立對象:

@interface LinViewController : UIViewController//建立表視圖的對象@property (retain, nonatomic) UITableView * mTableView;//建立字典對象@property (retain, nonatomic) NSDictionary * mDictionary;//建立數組對象@property (retain, nonatomic) NSArray * mArray;@end

在.m檔案裡添加實現的方法:
@implementation LinViewController//釋放建立的對象- (void)dealloc{    [_mTableView release];    [_mDictionary release];    [_mArray release];    [super dealloc];}//載入視圖- (void)viewDidLoad{    [super viewDidLoad];    //建立初始化表視圖    self.mTableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStyleGrouped];    //設定委派物件    self.mTableView.dataSource = self;    self.mTableView.delegate = self;    //把表視圖載入到當前視圖中    [self.view addSubview:self.mTableView];        //擷取.plist檔案的路徑    NSString * path = [[NSBundle mainBundle]pathForResource:@"data" ofType:@"plist"];    //初始化字典    self.mDictionary = [NSDictionary dictionaryWithContentsOfFile:path];    //初始化數組,根據字典對象擷取的資料    self.mArray = [[self.mDictionary allKeys]sortedArrayUsingSelector:@selector(compare:)];    //此處關聯的方法是相片順序顯示的方法,此時表示按字母順序排列}#pragma mark---UITableViewDataSource---------//根據數組元素擷取表視圖的行數- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    return [[self.mDictionary objectForKey:[self.mArray objectAtIndex:section]]count];}//繪製每一行表- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    //設定一個靜態字串做標籤,(靜態防止局部變數多次建立,提高效率,節約記憶體)    static NSString * identifer = @"identifer";    //建立一個cell對象(利用表示圖可以複用的機制)    UITableViewCell * pCell = [tableView dequeueReusableCellWithIdentifier:identifer];    //如果cell為空白,就建立一個新的出來    if (nil == pCell)    {        pCell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifer];    }    //擷取所在的地區    NSInteger section = [indexPath section];    //擷取當前表視圖行數    NSInteger row = [indexPath row];    //把數組中對應元素傳遞給視圖的文本    pCell.textLabel.text =  [[self.mDictionary objectForKey:[self.mArray objectAtIndex:section]]objectAtIndex:row];    return pCell;}//顯示地區的表頭標題- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{    return [self.mArray objectAtIndex:section];}//顯示地區的索引- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{    return self.mArray;}#pragma mark---UITableViewDelegate-----------//為表視圖分區- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{    return [self.mArray count];}- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];}end




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.