2012-01-02 6 views
0

私はいくつかのタブ(タブバー)を持つ私のアプリを持っています。私のXCODE上の別のタブからUILabelの値を変更する方法

最初のタブにはUILabelがあり、3番目のタブにはボタンにリンクされたメソッドがあります。

私はここで3つ目のボタンの方法からUILabel年代の値を変更したい(打ち上げトラフこれらのボタン)

はすべてのことを説明するためにいくつかのコードです:(UILabels付き)

FIRST PAGE @implementation FirstViewController

// definition des accesseurs 
@synthesize details; 
@synthesize recapitulatif; 

... 

とUILabels(2ページ目WIHTボタン - 実際の機能と、;-)これらの方法に注意を払っていない)を変更します方法

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    [connection release]; 

    NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
    [responseData release]; 
    //NSString *responseString2 = [NSString stringWithFormat:@"%s%@%s", "[", responseString, "]"]; // Pour ajouter les [] si y'en a pas autour de tout le contenu JSON, et on doit utiliser responseString2 au lieu de responseString à la ligne ci-dessous 
    NSArray *tableau = [responseString JSONValue]; 
    [responseString release]; 
    NSDictionary *dico = [tableau objectAtIndex:0];//NSDictionary *dico = [responseString JSONValue]; // sans [], on aurait fais ceci! 

    // Si cette condition est vérifiée, c'est que le token est recu. On vas alors relancer une requete pour avoir les données. 
    if ([dico objectForKey:@"token"]) { 
     [ [MySingleton sharedMySingleton] setAuth:[dico objectForKey:@"token"] ]; 

     //affichage du message de confirmation de sauvegarde des mots de passe 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Login et Mot de passe" message:@"Votre login et votre mot de passe sont enregistrés." delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     [alert show]; 
     [alert autorelease]; 
    } 
} 

読んでいただきありがとうございます!ラベルは、すなわち第一のタブが存在するクラスに

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(updateLabel:) 
              name:@"LABELUPDATENOTIFICATION" 
              object:nil]; 

+0

あなたはNSUserDefaultsを使用することができます3番目のタブに、ボタンの操作に応じて値を変更し、最初のタブのラベルに値を割り当てることができます。 – Leena

+0

@Leena:最初のタブをクリックすると、彼はNSUSerdefaults ??? UILabelsの内容を更新しますか?私はそうは思わない... – clement

答えて

0

はオブザーバーを追加します。

3番目のボタンのメソッド(これらのボタンを使用して起動)が呼び出されると、更新テキスト(NSString)オブジェクトの通知が送信されます。

[[NSNotificationCenter defaultCenter] postNotificationName:@"LABELUPDATENOTIFICATION" 
                object:updatedStringLabelText] 

ラベルを持つクラスで次の通知メソッドを実装します。

- (void)updateLabel:(NSNotification*)notification 
{ 
    NSString *updatedText = (NSString*)[notification object]; 
    [yourLabel setText:updatedText]; 
} 
+0

あなたの助けをありがとう!私は今日か明日にそれを試みます。タイタン!それは素晴らしいアイデアです、そのオブザーバー! – clement

+0

どこにFirst coe(オブザーバー?)を置く必要がありますか? – clement

+0

と私は2つのラベルを実際に変更する必要があります、どのように私は2つの投稿の通知を識別する?その名前で???そこにdifférencianteに簡単な方法がありますか? 感謝! – clement

0

AppDelegateにNSStringのを宣言した方がよいとuは