Table View 在iOS開發中是一個很重要的控件。數據庫
從Object Library中能夠找到Table View控件。
segmentfault
在創建的項目文件目錄選擇Main.Storyboard
切換到Storyborad界面,而後從Object Library從拖拽Table View控件到View中。ide
將文件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:numberOfRowsInSection
和tableView: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 View
和DataSource
與Delegate
之間創建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文件中的數據
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; }
運行,能夠發現讀取數據成功。