2011-06-30 17 views
0

私のアプリケーションはVOIP電話ツールボックスです。UISwitchがRestful API呼び出しを呼び出し、UISwitch値を元に戻したい場合

私は一連のUISwitchコントロールを用意しています。ユーザーは、たとえば発信者ID設定を変更したい場合など、設定を変更できます。

ユーザーが設定を変更すると、Restful APIでテレフォニープラットフォームに電話をかける必要があります。 Restful呼び出しが失敗した場合は、スイッチを以前の設定に戻したいと思います。たとえば、ユーザが発信者IDをオンにして接続に失敗したために失敗した場合、スイッチをオフに戻したいと思います。

私はswitchChangedValueメソッドでこれを実装しましたが、厄介なループを作成します。障害が発生すると、UISwitchを以前の設定に設定しますが、switchChangedValueメソッドを再度コールします。失敗するとループが繰り返されます。

ここでは、switchChangedValueメソッドの一部を紹介します。

//Check if its a valid response from the XSI server 
if ([bs getHTTPResponseCode] >= 200 && [bs getHTTPResponseCode] < 300) { 
    //This is the successful case  
} 
else 
{ 

    // I throw an alert here    

    //Id really like to change the UISwitch back if it goes wrong but it causes a bad loop.  
     if (buttonstate == false){ 
     [switchbutton setOn:YES animated:YES]; 
        //This invokes my switchChangedValue again 

    } 
    else if (buttonstate == true){ 
     [switchbutton setOn:NO animated:YES]; 
        //This invokes my switchChangedValue again 
    } else{ 
     NSLog(@"Something went bad"); 
    } 


[bs release]; 

答えて

0

あなたはこのような何か試してみてください:あなたのヘッダーでこれを宣言し

を:

- (id)init { 
    if (self = [super init]) { 
     ... 
     _fireAPICall = YES; 
     ... 
    } 
    return self; 
} 
:あなたはにいる特定のクラスが初期化されるたびに

BOOL _fireAPICall; 

はYESに設定してください

次に:

if (_fireAPICall) { 
    if ([bs getHTTPResponseCode] >= 200 && [bs getHTTPResponseCode] < 300) { 
     // success 
    } else { 
     // failure 
     _fireAPICall = NO; 
     [switchbutton setOn:!buttonstate animated:YES]; 
    } 
} else { 
    _fireAPICall = YES; 
    // handle case where switch is turned off if necessary 
} 

これは、ユーザーが手動でスイッチをオフにしたときにAPI呼び出しを行っていないことを前提としています。

上記アップデート!

+0

実際には、ユーザーが手動でスイッチをオフにしても、Voipプラットフォームで設定をオフにするにはAPI呼び出しを行う必要があります。 –

+0

更新済み!それは助けなければならない。 – codykrieger

関連する問題