標籤:ios;uitableview;listview;圖片不能正常顯示
UITableView就相當於android中的listview,在這裡先介紹一個簡單的UItableView的用法,因為我也是剛學。而且也遇到了一些問題。直接上代碼吧
這是ViewController.h
#import <UIKit/UIKit.h>@interface ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>@property (nonatomic,retain) NSArray * fileList;@property (nonatomic,retain) UITableView * tableView;@end
這是ViewController.m檔案
#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; NSBundle * bundle = [NSBundle mainBundle]; NSString * plistPath = [bundle pathForResource:@"infoHeaderAndTitleAndDetile" ofType:@"plist"]; self.fileList=[[NSArray alloc] initWithContentsOfFile:plistPath]; UITableView * tView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStyleGrouped]; tView.delegate=self; tView.dataSource=self; _tableView=tView; [self.view addSubview:_tableView]; }- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}-(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *CellWithIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellWithIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellWithIdentifier]; } NSUInteger row = [indexPath row]; NSDictionary *rowDict = [self.fileList objectAtIndex:row]; cell.textLabel.text = [rowDict objectForKey :@"title"]; cell.imageView.opaque=YES;//must add this sentence,or the image will gone cell.imageView.image = [UIImage imageNamed:[[rowDict objectForKey :@"header"] stringByAppendingString:@".jpg"]];//image must have the .jpg or other NSLog(@"%@",cell.imageView); cell.detailTextLabel.text = [rowDict objectForKey :@"detail"]; cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator; return cell;}- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section{ return [self.fileList count];}@end
需要注意的地方有三點,也是我遇到的問題
1、兩個必須實現的協議方法,相當於java的介面的抽象方法
-(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
和
- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
2、圖片不能正常顯示的原因
cell.imageView.opaque=YES;//must add this sentence,or the image will gone
這個opaque屬性要設為YES,預設是NO
3、圖片無需寫路徑,但是尾碼名一定要寫,比如.jpg,.png
本文出自 “靈哥筆記” 部落格,請務必保留此出處http://kinghacker.blog.51cto.com/7767090/1677432
IOS開發之UITableView