iOS開發筆記(二)Table View

Table View

Table View 在iOS開發中是一個很重要的控件。數據庫

從Object Library中能夠找到Table View控件。
請輸入圖片描述segmentfault

在創建的項目文件目錄選擇Main.Storyboard切換到Storyborad界面,而後從Object Library從拖拽Table View控件到View中。ide

在Table View中顯示數據

將文件SimpleTableViewController.h修改代碼以下:spa

@interface SimpleTableViewController:UIViewController <UITableViewDelegate, UITableViewDataSource>

PS.我這裏項目Class prefix是SimpleTable。
而後在SimpleTableViewController.m中定義一個instance variable 用來存儲將要在Table View 中顯示的數據。code

@implementation SimpleTableViewController{
    NSArray *dataList;
}

而且在viewDidLoad方法中初始化和賦值。圖片

-(void)viewDidLoad
{
    [super viewDidLoad];
    dataList = [NSArray arrayWithObjects:@"item1",@"item2",@"item3",nil];
}

如今咱們添加兩個方法:tableView:numberOfRowsInSectiontableView:cellForRowAtIndexPath。這兩個方法是UITableViewDataSource協議中的一部分。ip

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [dataList count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *identifier = @"SimpleTableIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if(cell == nil){
        cell = [UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
    }
    cell.textLabel.text = [dataList objectAtIndex:indexPath.row];
    return cell;
}

如今還須要在Table ViewDataSourceDelegate之間創建connection。
切換到Storyboard界面中選擇Table View並右鍵,獲得以下:ci

請輸入圖片描述

能夠看到Outlets中有dataSource和delegate兩個項目,如今須要將這兩個項目和Simple Table View Controller之間創建connection。方法是按住dataSource和delegate右側的圓圈而後拖拽到Simple Table View Controller上,以下圖所示:開發

請輸入圖片描述

最終獲得以下:it

請輸入圖片描述

而後運行

請輸入圖片描述

添加縮略圖
「Add Files to "SimpleTable"...」
而後添加一張圖片。我這裏添加的是wallpaper-1791868.jpg

請輸入圖片描述

而後在方法tableView:cellForRowAtIndexPath:中添加如下代碼:

cell.imageView.image = [UIImage imageNamed:@"wallpaper-1791868.jpg"];

而後運行查看效果。

請輸入圖片描述

從Property list中讀取並顯示數據

上面直接將數據直接保存在代碼中,在實際開發中好的實踐應該是代碼和數據分離,將數據保持到數據庫或者本地文件中。因此這裏要提到Property list文件。

新建一個Property list文件

請輸入圖片描述

編輯Property list文件

請輸入圖片描述

而後咱們來讀取Property list文件中的數據

NSString *path = [NSBundle mainBundle] pathForResource:@"recipes" ofType:@"plist"];
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
tableData = [dict objectForKey:@"Recipes Name"];
thumbnail = [dict objectForKey:@"Thumbnail"];
prepTime = [dict objectForKey:@"prepTime"];

修改tableView:numberOfRowsInSection:tableView:cellForRowAtIndexPath:方法的代碼。

- (NSInteger)tableView: (UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [tableData count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *simpleTableIdentifier = @"SimpleTableIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if(cell == nil){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }
    cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
    cell.imageView.image = [UIImage imageNamed:[thumbnail objectAtIndex:indexPath.row]];
    return cell;
}

運行,能夠發現讀取數據成功。

相關文章
相關標籤/搜索