2012-06-29 101 views
1

如何通过按钮点击更新标签,当它们都位于不同类别的uiview控制器中时...单击按钮时,标签应该更新...我尝试了很多次。 。但它没有发生..通过不同视图中的按钮更新标签

多一个问题是我的应用程序运行良好的模拟器,但当我在设备上运行动态创建的按钮(按钮图像)不可见,动作正在执行,但图像丢失..可能我知道为什么?

+0

添加一些代码。 – rishi

+0

另一个问题是,当应用程序运行得分时,正确的图像打上正确的png文件n错误的png文件错误,但是当应用程序关闭并重新开始时,得分会刷新....如果我们前后移动分数和图像是好的..但是当应用程序关闭时,得分为0 ... – Cgs

+0

如何通过编码来锁定和解锁游戏的级别.... 我使用了level.enabled = NO; 我的第一级游戏应用程序是开放的,其他级别都锁定..所以我保持一个条件,一旦条件满足,它解锁关卡..但我的概率是,当我按回来按钮,然后再解锁下一个这是开放的水平... 任何人都可以帮助我在它..... ThankQ i​​n adv ... – Cgs

回答

7

有几种方法可以在iOS中维护视图(实际上是视图控制器)之间的通信。对我来说最简单的就是发送通知。您在要进行更改的视图中添加通知的观察者,并在触发更改的视图中添加通知。这样你从ViewController B告诉ViewController A “东西已准备就绪,进行更改”

这当然需要创建接收器视图并且已经在监听通知。

在视图控制器B(发件人)

- (void)yourButtonAction:(id)sender 
{ 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"theChange" object:nil]; 
} 

在视图控制器A(接收器) 添加观察者监听通知:

- (void)viewDidLoad 
{ 
    //......... 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(makeTheChange) name:@"theChange" object:nil]; 
} 

不要忘记将其删除(在这种情况下, ,dealloc

- (void)dealloc 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"theChange" object:nil]; 
    [super dealloc]; 
} 

最后,th e方法将更新您的标签

- (void)makeTheChange 
{ 
    yourLabel.text = @"your new text"; 
} 
+0

感谢您的评论/回复。请试试这个。 – Cgs

+0

它不工作:( – Cgs

+0

它在哪里失败?哪种方法没有被调用?一些细节会很好。 –

0

不知道这是否是一个好的解决方案,但是您可以在单击该按钮时将文本存储在全局NSString中,然后在加载第二个视图时将该字符串放入标签中。

+0

因为我用plist得分,图像和提示...所以我需要存储所有db中的标签文本? – Cgs