UIVIew控制器+ iphone的生命周期

时间:2011-09-06 11:05:43

标签: iphone uitableview uiviewcontroller nsmutablearray lifecycle

我想清楚一下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它没有分配正确的计数。

请解释是否有人有任何想法.. 提前致谢

3 个答案:

答案 0 :(得分:4)

View Controller Programmers Guide for iOS

中对此进行了详细解释

答案 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
}

我在委托文件中使用了一个存储已解析数据的数组,以便我可以在任何地方使用它。

希望它能给你一个想法...