2013-02-13 3 views
0

У меня есть страница входа пользователя с кнопкой отправки. При успешном входе в систему я хочу перейти к следующему представлению. Для этого я звоню в веб-службу (это будет проверять данные из БД) который вернет true или false в зависимости от успеха или неудачи. Это работает нормально; то есть, я могу получить значение, используя NSXMLParser следующим образом:показать следующее представление в зависимости от значения сообщения SOAP

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
    if (elementFound) { 
     soapResults = [string boolValue]; 
     //NSLog(@"soapResultss = %@",soapResults); 

    } 
    if (soapResults) 
    { 
     x = 1; // x is 1 if username and password are correct. 
    } 
    else 
    { 
     x = 0;//x is 0 if username and password are incorrect 
    } 
} 

Среднее время (в случае успеха) Я пытаюсь вызвать следующий вид, как это в моем «кнопку отправки нажмите» метод:

if(x==0) 
    { 

    } 
    else if(x==1) 
    { 
     [self.navigationController pushViewController:self.viewController animated:YES]; 
    } 

Но проблема в том, что элемент управления не возвращается, чтобы «отправить нажатие кнопки», то есть в «else if». И, я думаю, что это неправильный способ сделать. Что является правильным способ сделать это? Пожалуйста, предлагайте. Спасибо.

+0

Просьба уточнить, что "управление не возвращается к этому" означает. – trojanfoe

+0

обновил мой вопрос. Спасибо. – bapi

+0

Вам необходимо создать пользовательский протокол делегатов в толкаемом контроллере представления, а исходный контроллер представления - как объект делегата. Это используется, чтобы вернуть состояние обратно в исходный контроллер представления, когда он выскочил. См. Http://stackoverflow.com/questions/11632043/use-of-delegates-to-communicate-between-view-controllers – trojanfoe

ответ

0

Вы проверить эту строку кода, почему вы используете себя с объектом контроллера представления

[self.navigationController pushViewController:self.viewController animated:YES]; 

использовать эту строку кода (Object вашего ViewController)

[self.navigationController pushViewController:viewController animated:YES]; 
-1

Ok это выглядит, как если бы просто используя TRUE/FALSE, не будет работать в этом случае.

пытается enum dataType будет эффективным

в файле .h

enum { 
    kReceivingSoapData, 
    kReceivedIncorrectData, 
    kReceivedCorrectData 

}receivedSoapResult; 

@interface ViewController : UIViewController{ 
..... 
} 

в используемых методах

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
    if (elementFound) { 
     soapResults = [string boolValue]; 
     //NSLog(@"soapResultss = %@",soapResults); 

    } 
    if (soapResults) 
    { 
    receivedSoapResult = kReceivedCorrectData; 
    } 
    else 
    { 
     receivedSoapResult = kReceivedIncorrectData;; 
    } 
} 

в методе действия

if(receivedSoapResult == kReceivedIncorrectData) 
    { 
// incorrect uName and password received 
    } 
    else if(receivedSoapResult == kReceivedCorrectData) 
    { 
     //correct password received 
     [self.navigationController pushViewController:self.viewController animated:YES]; 
    } 
else{ 
// still receiving data 

} 
+0

Как этот 'enum' улучшается на' BOOL'; вы все равно используете только 2 значения. – trojanfoe

+0

, если (x == 0) создает здесь два условия: во-первых, если ответ еще не получен или получен ответ, является FALSE. В предыдущем условии учитывается, используется ли перечисление. – AppleDelegate

+0

Вы не показываете инициализацию 'receivedSoapResult'' kReceivingSoapData', поэтому не очевидно, что он используется. Также вы даже не решаете правильную проблему; его проблема заключается в том, что контроллер просмотра «не возвращается, чтобы отправить кнопку« нажмите ». – trojanfoe

Смежные вопросы