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

Posted

技术标签:

【中文标题】如何从我的 XCODE 上的另一个选项卡更改 UILabel 值【英文标题】:How to change UILabel value from another tab on my XCODE 【发布时间】:2012-01-02 09:32:11 【问题描述】:

我的应用有一些标签(标签栏)。

在第一个选项卡中,有 UILabel,在第三个选项卡中,有方法,链接到按钮。

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

这里有一些代码来说明所有这些:

第一页(带有 UILabels) @implementation FirstViewController

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

...

以及会改变UILabels的方法(第二页WIHT BUTTONS - 带有实际功能,不要关注那些方法;-))

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

感谢您的阅读/帮助!

【问题讨论】:

@Leena : 如果我点击第一个选项卡,他会用 NSUSerdefaults 刷新 UILabel 的内容???我不这么认为... 【参考方案1】:

添加观察者:

[[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];

【讨论】:

感谢您的帮助!!!我会在今天或明天尝试。谢谢!观察者们,这是个好主意! 其实我有 2 个标签要更改,我如何识别这两个帖子通知?以它的名字???有一个简单的方法来différenciante那些???谢谢! 你必须在需要更新标签的类中添加观察者。并在同一个类本身中实现 ​​updateLabel。【参考方案2】:

最好在 AppDelegate 中声明 NSString,你可以根据你在第三个选项卡中的按钮操作更改它的值,并在第一个选项卡标签中分配值

【讨论】:

以上是关于如何从我的 XCODE 上的另一个选项卡更改 UILabel 值的主要内容,如果未能解决你的问题,请参考以下文章

更改 Material UI 选项卡组件上的滚动按钮图标

在另一个选项卡上更改视觉效果

在材质 UI 中动态更改选项卡内容

如何在 Xcode 上的选项卡式应用程序中添加选项卡

如何强制 Xcode 在 General 选项卡下接受我的 Developer ID 证书?

仅当在 angularjs 中选择选项卡时如何调用函数(或指令)?