【问题标题】:UIAlertView causing change to navigation bar button's titleLabelUIAlertView 导致更改导航栏按钮的 titleLabel
【发布时间】:2013-11-20 13:15:02
【问题描述】:

我在我的应用程序中观察到一个奇怪的趋势:每当显示警报消息时,导航栏按钮的标题值都会更改为其情节提要标题值。这是 UIAlertView 之一:

上图中可见的标题值 100 是我的故事板中存在的值。我已成功将此条形按钮的值更改为当前分数:

self.coinsRemainingButton.titleLabel.text = self.coinsRemaining;  

在我显示一些警报视图之前一切正常。只要显示任何 UIAlertView,此导航栏按钮的标题就会更改为 100,而与当前分数无关。例如。即使我当前的分数是 500,一旦出现警告消息,我的条形按钮的值就会更改为 100,如上面的屏幕截图所示。
我已经彻底检查过了,我自己并没有错误地更改值。
如果我删除 UIAlertView 行,一切都会按顺序恢复。
感谢您的宝贵时间。

更新 1:这是我的 UIAlertView 代码:

 UIAlertView *iapSuccessful = [[UIAlertView alloc] initWithTitle:@"Purchase Successful"
                                                            message:@"Congrats!! You just got coins"
                                                           delegate:Nil
                                                  cancelButtonTitle:@"Ok"
                                                  otherButtonTitles: nil];
 [iapSuccessful show];

更新 2:我找不到解决方案,所以为了解决问题,我想在 UIAlertView 显示后立即通过代码更新我的栏按钮标题:

[iapSuccessful show];
self.coinsRemainingButton.titleLabel.text = self.coinsRemaining;

但 UIAlertView 仍在强制将栏按钮的标题更改为情节提要值。

【问题讨论】:

  • 显示使用 uialertview 的方法
  • @Ilario 方法很大,但我添加了用于警报视图的 UIAlertView 代码。
  • 我想看看添加点的部分,我猜它就在 UIAlertView 之前
  • 我正在通过self.coinsRemainingButton.titleLabel.text = self.coinsRemaining; 更新硬币号码。事实上,如果我仔细监控该按钮标题,那么第一个硬币会更新为正确的数字,但在几分之一秒内,一旦出现警报视图,条形按钮标题就会更新为 100。注意:积分(或硬币)可以更新应用程序流程中的任何位置,不一定在任何 UIAlertView 之前。然而,每次出现警报时,即使没有对任何地方的硬币数量进行更新,暗背景中的硬币数量也会变为 100。
  • 代码中有一点你说硬币必须是 100?

标签: ios uialertview


【解决方案1】:

我尝试了几种技巧来解决这个问题,但只要出现任何UIAlertView,条形按钮项的值 (titleLabel.text) 就会更改为其情节提要值。

我观察到从情节提要中绘制的导航栏对象的值正在发生变化。所以我从情节提要中删除了条形按钮项目并以编程方式添加了条形按钮,它解决了我的问题 :)
如果您需要,这是以编程方式添加栏按钮项的代码:

//Add a custom button as the right bar button item of navigation bar
self.coinsRemainingButton.frame = CGRectMake(0.00f, 0.00f, 72.00f, 37.00f);
[self.coinsRemainingButton setBackgroundImage:[UIImage imageNamed:@"coinsBackground"] forState:UIControlStateNormal];
[self.coinsRemainingButton setTitle:@"100" forState:UIControlStateNormal];
UIBarButtonItem *rightCustomBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.coinsRemainingButton];
self.navigationItem.rightBarButtonItem = rightCustomBarButtonItem;

【讨论】:

    【解决方案2】:

    从情节提要中删除按钮的标题,它解决了问题

    【讨论】:

    • 我尝试从情节提要中删除按钮的标题,但是当我运行我的应用程序时,按钮的标题显示为空白。硬币正在正确更新,但它们在 GUI 上不可见,标题只是空白。如果情节提要标题为空白,self.coinsRemainingButton.titleLabel.text = self.coinsRemaining; 似乎不起作用:(
    • 哦..奇怪的事情...在viewDidLoad中这个textLabel应该声明多少?
    • viewDidLoad 中没有提到与栏按钮标题有关的任何内容。似乎 UIAlertView 正在重置导航栏按钮项。或至少将条形按钮标题的值重置为其情节提要值。我试过谷歌搜索,但没有任何成果......
    • @SaurabhHooda 如果您尝试在 viewDidLoad 中设置一些值?会发生什么?
    • 如果我在 viewDidLoad 中设置了一些值,那么当视图加载时该值显示为 titleLabel。但是当一些警报视图出现时,会出现同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2014-11-21
    • 2019-01-16
    相关资源
    最近更新 更多