2011-12-25 84 views
0

我想在頁面加載時調用Web服務。目前我通過點擊按鈕來調用它,它工作正常。但是當我嘗試在viewDidAppear上做同樣的事時,它不會發生。我想實現的是如果用戶名和密碼被保存,那麼它應該會自動加載下一頁。它正在填充文本框但未加載下一頁。如何在頁面加載時調用Web服務

這裏是我的提交按鈕和ViewDidAppear代碼:

-(IBAction)submitButton{ 
[apd showCoverView:YES WithActivityIndicator:YES]; 
PlaceWebService *handler = [[PlaceWebService alloc]init]; 
[handler setRequestType:Loginparser]; 
NSString *url = [NSString stringWithFormat:@"http://www.mywebsite.com/api.php?command=auth&cardno=%@&password=%@",username.text,password.text]; 
[handler sendingLoginRequest:url Respond:self At:@selector(showParsed:)];  
} 

和viewDidAppear

-(void)viewDidAppear:(BOOL)animated 
{ 
NSLog(@"Appeared"); 
[self loginArea]; 
apd=[[UIApplication sharedApplication]delegate]; 
NSString *filepath=[self pathOfFile]; 
if([[NSFileManager defaultManager]fileExistsAtPath:filepath]) 
{ 
    NSArray *array=[[NSArray alloc]initWithContentsOfFile:filepath]; 
    username.text=[array objectAtIndex:0]; 
    password.text=[array objectAtIndex:1]; 
      [self submitButton]; 
} 
} 

我該怎麼辦?請幫忙...

+1

不要忘記異步運行它,否則用戶可能會認爲該應用響應速度慢。 – Justin 2011-12-25 13:20:44

回答

0

這裏有幾件事情可能是問題。

1)

IBActions通常需要一個參數。聲明爲:

- (IBAction) submitButton: (id) sender; 

,然後從viewDidAppear方法調用它:

[self submitButton: self]; 

2)

還要確保UI的東西是發生在主線程(你沒有指定如果應用程序是多線程或沒有),所以也許:

[self performSelectorOnMainThread: @selector(submitButton:) withObject: self]; 

而且

3)

設置斷點,看看你的submitButton方法(和之前的線)時viewFromAppear:被稱爲實際上甚至稱。

並且Rishi的建議也不錯!

+0

嘿我試過所有這些,並且在viewDidAppear中編寫了所有這些代碼行。但仍然Web服務不會被調用..卡住.. – 2011-12-25 15:04:47

+0

你是否在調試器中的每一行代碼,以查看'submitButton'方法中的行是否從'viewDidAppear:'調用? – 2011-12-25 15:24:13

2

如果你想在加載視圖和沒有任何事件後調用方法,那麼你需要以普通實例方法代替IBAction方法。 - (void)submitButton { // implementation }

然後從viewDidAppear調用此方法。

相關問題