如何从我的XCODE上的另一个选项卡更改UILabel值

时间:2012-01-02 09:32:12

标签: iphone ios xcode uitableview uiview

我的应用程序有一些标签(tabbar)。

在第一个标签中有UILabel,在第三个标签上有方法,链接到按钮。

我想从第三个按钮的方法改变UILabel的值(通过这些按钮启动)

以下是一些代码来说明所有内容:

第一页(使用UILabels)     @implementation FirstViewController

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

...

并且会改变UILabels的方法(具有实际功能,不注意那些方法;-))

- (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];
    }
}

感谢您的阅读/帮助!

2 个答案:

答案 0 :(得分:0)

添加观察者:

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

在标签存在的类中,即第一个标签。

当使用更新的文本(NSString)对象通知后调用第三个按钮的方法(通过这些按钮启动)。

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

在具有标签的类中实施以下通知方法。

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

答案 1 :(得分:0)

最好在AppDelegate中声明NSString,你可以根据第三个标签中的按钮操作更改其值,并在第一个标签标签中指定值