Жизненный цикл контроллера UIVIew + iphone - PullRequest
0 голосов
/ 06 сентября 2011

Я хочу пояснить жизненный цикл UIVIEWCONTROLLER в iphone:

- (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];
}

Пожалуйста, объясните мне, какой метод будет вызываться первым и почему.

Я хочу вызвать один метод для разбора веб-службы, а затем в соответствии с его ответом я хочу указать количество строк и изменения в табличном представлении.

Я пытался выделить массив в методе viewdidload и установить количество строк в соответствии с количеством массивов. Но это дает мне bad_access.Becoz, оно не выделяет правильное количество.

Пожалуйста, объясните, есть ли у кого-нибудь идеи ... Заранее спасибо

Ответы [ 3 ]

4 голосов
/ 06 сентября 2011
1 голос
/ 06 сентября 2011

Почему бы не поместить NSLog в каждый метод и запустить его, чтобы увидеть порядок?

Кроме того, похоже, что вы заполняете ячейки / строки сетевым вызовом для каждой ячейки (и никогда не освобождаете ресурсы- вы, вероятно, хотите их автоматически выпустить) - так зачем вам массив?

0 голосов
/ 06 сентября 2011

Я надеюсь, что мой код поможет вам, поскольку я не правильно понимаю ваш вопрос

- (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
}

Я использовал массив, который хранит проанализированные данные, в файле делегата, чтобы я мог использовать его где угодно.

Надеюсь, это даст вам идею ...

...