我想清楚一下iphone中UIVIEWCONTROLLER的生命周期:
- (void)viewDidLoad {
[super viewDidLoad];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 3;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 50.0;
}
//This is the method which will be called and IS REQ since we impl interface/delegate
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//We use own own table cell now instead of default
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"XMl_CELL"];
//Our cell has images and text
Wsp = [[WebServiceParser alloc]initWithURLMy:@"http://api.geonames.org/findN"];
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//MyParserData *data=(MyParserData*)[arrayTable objectAtIndex:indexPath.row];
//NSLog(@"Here->%@",data.url);
[tableView deselectRowAtIndexPath:indexPath animated:TRUE];
}
请向我解释首先调用哪种方法以及为什么。
我想调用一个Web服务解析方法然后根据它的响应我想在表视图中放入行计数和更改。
我曾尝试在viewdidload方法中对数组进行分配,并根据数组的计数设置行数。但是它给了我bad_access.Becoz它没有分配正确的计数。
请解释是否有人有任何想法.. 提前致谢
答案 0 :(得分:4)
答案 1 :(得分:1)
为什么不在每个方法中放置一个NSLog并运行它以查看订单?
此外,看起来你正在用每个单元格的网络调用填充单元格/行(并且永远不会释放allocs - 你可能想要自动释放那些) - 所以你为什么需要一个数组呢?
答案 2 :(得分:0)
我希望我的代码可以帮助您,因为我无法正确理解您的问题
- (void)viewDidLoad
{
myApp = (myAppDelegate *) [[UIApplication sharedApplication] delegate];
[self performSelectorInBackground:@selector(startParsing) withObject:nil];
[super viewDidLoad];
}
- (void) startParsing
{
[self performSelectorOnMainThread:@selector(startIndicator) withObject:nil waitUntilDone:NO];
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSURL *url = [[NSURL alloc] initWithString:@"http://www.aaaa.org"];
NSData *data = [NSData dataWithContentsOfURL:url];
// 2 -- parsing
parser = [[myParser alloc] init];
[parser parseXML:data];
[data release];
[parser print];
[self performSelectorOnMainThread:@selector(updateTable) withObject:nil waitUntilDone:NO];
[pool release];
}
- (void) startIndicator
{
av.hidesWhenStopped = YES;
[av startAnimating];
}
- (void) updateTable
{
[av stopAnimating];
[myTable reloadData];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
int n = [myApp.myParsedDataArray count];
return n ;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
int cellHeight = 70 ;
return cellHeight;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// code
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//Code
}
我在委托文件中使用了一个存储已解析数据的数组,以便我可以在任何地方使用它。
希望它能给你一个想法...