如何从我的 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 值的主要内容,如果未能解决你的问题,请参考以下文章