2011-12-25 19 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

答えて

0

ここではいくつか問題が発生する可能性があります。

1)

IBActionsは、通常のパラメータを取ります。それを宣言します。

- (IBAction) submitButton: (id) sender; 

そしてとしてあなたviewDidAppear方法からそれを呼び出す:

[self submitButton: self]; 

2)

また、(あなたはなかったUIのものは、メインスレッド上で起こっていることを確認してくださいアプリがマルチスレッドであるかどうかを指定してください)

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

および

3)

セットviewFromAppear:が呼び出されたときに、あなたのsubmitButton方法(とその前の行)は、実際にしても呼ばれているかどうかを確認するためにブレークポイントを設定します。

リシの提案も良いです!

+0

ねえ、私はこれをすべて試して、viewDidAppearでコードのすべての行を書きました。しかし、まだWebサービスは呼び出されません..スタック... –

+0

'submitButton'メソッドの行が' viewDidAppear: 'から呼び出されるかどうかをデバッガの各コード行で確認しましたか? –

2

ビューをロードした後にイベントを出さないでメソッドを呼び出す場合は、IBActionメソッドではなく通常のインスタンスメソッドとして呼び出す必要があります。 - (無効)submitButton { //実装 }

このメソッドをviewDidAppearから呼び出します。

関連する問題