UIAlertView не инициируется - PullRequest
0 голосов
/ 13 декабря 2010

Я пытаюсь разобрать содержимое HTML с помощью HTMLParser, и с помощью него я пытаюсь запустить UIAlertView, приложение работает нормально, но не запускает UIAlertView.

Вот код:

- (IBAction) loginButton: (id) sender
{

// Create the username and password string.
// username and password are the username and password to login with
NSString *postString = [[NSString alloc] initWithFormat:@"username=%@&password=%@",userName, password];
// Package the string in an NSData object
NSData *requestData = [postString dataUsingEncoding:NSASCIIStringEncoding];

// Create the URL request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString:@"http://localhost/dologin.php"]];  // create the URL request
[request setHTTPMethod: @"POST"];   // you're sending POST data
[request setHTTPBody: requestData];  // apply the post data to be sent

// Call the URL
NSURLResponse *response;  // holds the response from the server
NSError *error;   // holds any errors
NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse:&response error:&error];  // call the URL

/* If the response from the server is a web page, dataReturned will hold the string of the HTML returned. */

HTMLParser * parser = [[HTMLParser alloc] initWithData:returnData error:&error];

HTMLNode * bodyNode = [parser body];

NSArray * errorNodes = [bodyNode findChildTags:@"errorbox"];

for (HTMLNode * errorNode in errorNodes) {
    if ([[errorNode getAttributeNamed:@"div class"] isEqualToString:@"errorbox"]){
        alertWithOkButton = [[UIAlertView alloc] initWithTitle:@"Status..." message:[NSString stringWithFormat:@"Invalid Access Info, try again"] delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil];
        [alertWithOkButton show];
        [alertWithOkButton release];
        //Login Failed
    }
}

NSArray * spanNodes = [bodyNode findChildTags:@"clientarea.php?action=masspay"];

for (HTMLNode * spanNode in spanNodes) {
    if ([[spanNode getAttributeNamed:@"action"] isEqualToString:@"clientarea.php?action=masspay"]){
        alertWithOkButton = [[UIAlertView alloc] initWithTitle:@"Status..." message:[NSString stringWithFormat:@"Login Accepted, redirecting to the main app screen. :)"] delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:@"Go",nil];
        [alertWithOkButton show];
        [alertWithOkButton release]; //Login Success
    }
}

[parser release];

}

1 Ответ

0 голосов
/ 13 декабря 2010

Ваши AlertViews выглядят правильно сформированными (хотя для сообщений вам не нужен материал [NSString stringWithFormat:], так как вы на самом деле ничего не форматируете - просто @ "ваше сообщение" хорошо) 1001 *

Поскольку они в порядке, это говорит нам о том, что условия, из-за которых они появляются, на самом деле никогда не возникают. Либо ни одно из ваших сравнений isEqualToString не является истинным, либо оба errorNodes и spanNodes не пусты, либо какая-то комбинация этих вещей.

Нажмите рядом с первым для оператора и установите точку останова. Постройте и отладьте и дайте программе работать, пока она не достигнет точки останова. Теперь вы можете проверить и посмотреть, что на самом деле содержат errorNodes и spanNodes.

...