分享

iphone利用线程实现数据的加载,并展示在table列表中

 昵称2735774 2014-09-01
 实现的过程是修改两个table 的controller类,修改方法如下:
#import <UIKit/UIKit.h>
@interface WelcomePavilionViewController : UIViewController
<UITableViewDelegate,UITableViewDataSource>
{
	NSMutableArray  *array;
	IBOutlet UITableView *tableView;
}
@property (nonatomic,retain) NSMutableArray  *array;
@property (nonatomic,retain) UITableView *tableView;
@end
实现方法是:
#import “WelcomePavilionViewController.h”
#import “XmlWelcome.h”
@implementation WelcomePavilionViewController
@synthesize array,tableView;
- (void)viewDidLoad {
	[super viewDidLoad];
}
- (void)viewWillAppear:(BOOL)animated {
	if ([self.array count]==0) {
		[NSThread detachNewThreadSelector:@selector(myTaskMethod) toTarget:self withObject:nil];
	}
}
-(void)myTaskMethod
{
	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
	XmlWelcome *parser=[[XmlWelcome alloc]
	initWithContentsOfURL:[NSURL URLWithString:@"http://mp./welcomedemos/getpavilionxml.json?area=a&width=80&height=80&digest_length=20" ]];
	//设置代理
	[parser setDelegate:parser];
	[parser parse];
	self.array=parser.ones;
	[self.tableView reloadData];
	[parser  release];
	[pool release];

}
- (void)didReceiveMemoryWarning {
	// Releases the view if it doesn’t have a superview.
	[super didReceiveMemoryWarning];
	// Release any cached data, images, etc that aren’t in use.
}

- (void)viewDidUnload {
	self.array=nil;
	self.tableView=nil;
}
- (void)dealloc {
	[self.tableView release];
	[self.array release];
	[super dealloc];
}

- (NSInteger)tableView:(UITableView *)tableView
	numberOfRowsInSection:(NSInteger)section {
	return [array count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
	UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"tag"];
	if (cell==nil) {
		cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
		reuseIdentifier:@”tag”] autorelease];
	}
	//表格设计
	NSDictionary* one = [array objectAtIndex:indexPath.row];
	cell.textLabel.text = [one objectForKey:@"title"];
	cell.detailTextLabel.text = [one objectForKey:@"content"];
	id path = [one objectForKey:@"image"];
	NSURL *url = [NSURL URLWithString:path];
	NSData *data = [NSData dataWithContentsOfURL:url];
	UIImage *image = [[UIImage alloc] initWithData:data cache:NO];
	cell.image=image;
	[image release];
	return cell;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
	return @”Hobby Information:”;
}
@end

参考资料:http://wangjun./?p=881

这里总结一下,关键的总结点是这里

- (void)viewWillAppear:(BOOL)animated {
	if ([self.array count]==0) {
		[NSThread detachNewThreadSelector:@selector(myTaskMethod) toTarget:self withObject:nil];
	}
}
然后再在自己的调用方法里面调用[self.tableView reloadData];这个方法

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多