在导航栏上更改UIButton的标题,错误的标题显示为瞬间iOS

时间:2015-04-04 18:40:43

标签: ios objective-c uibutton uibarbuttonitem

我在iOS应用中注册时有一个视图控制器,用户可以选择跳过。但是,如果他们开始这一步骤,他们要么必须完成它,要么点击撤消,这样就不会保存部分信息。为了确保这一点,我隐藏了导航栏按钮,进入下一个屏幕。首先,我有文字说" SKIP"然后当你开始输入信息时,它就会消失,一旦你输入了足够的信息,标题就会改为" NEXT&# 34 ;.它也可以倒退。您可以为" NEXT"输入足够的信息。出现,然后点击撤消,按钮消失,继续按下撤消,按钮应该说" SKIP"试。

问题是,当按钮重新出现时,在更改为新标题之前,它仍然具有旧标题一瞬间。因此,它会说" SKIP",用户开始输入信息,它消失,用户输入所有信息,然后重新出现,说" SKIP"一瞬间,然后改为" NEXT"。

这是在更新信息时调用的函数,检查按钮应显示的内容:

-(void)checkValid
{
    if( /*starting condition*/ )
    {
        [_nextButton setTitle:@"SKIP" forState:UIControlStateNormal];
        [_nextButton setTitle:@"SKIP" forState:UIControlStateDisabled];
        [_nextButton setTitle:@"SKIP" forState:UIControlStateSelected];
        [_nextButton setTitle:@"SKIP" forState:UIControlStateHighlighted];
        [_nextBarButtonItem setEnabled:YES];
        [_nextButton setHidden:NO];
    }
    else if( /* complete condition */ )
    {
        [_nextButton setTitle:@"NEXT" forState:UIControlStateNormal];
        [_nextButton setTitle:@"NEXT" forState:UIControlStateDisabled];
        [_nextButton setTitle:@"NEXT" forState:UIControlStateSelected];
        [_nextButton setTitle:@"NEXT" forState:UIControlStateHighlighted];
        [_nextBarButtonItem setEnabled:YES];
        [_nextButton setHidden:NO];
    }
    else /* in between condition */
    {
        [_nextButton setHidden:YES];
        [_nextBarButtonItem setEnabled:NO];
    }
}

_nextButton是我拖动到IB中导航栏的自定义UIButton。 _nextBarButtonItem是UIButton出现在视图层次结构中的UIBarButtonItem。我最初只设置了UIControlStateNormal的标题,但想到可能因为按钮出现它处于不同的状态,所以我尝试添加每个状态......

任何想法可能会出错?我没有在其他可能相互冲突的地方更改标题。

我感谢任何提示。

编辑 - 我尝试更改它,以便我只更改_nextButton的隐藏属性,因此_nextBarButtonItem的启用属性始终打开。这允许相同的功能(因为_nextButton是隐藏的,你不能按它),但它仍然只是瞬间显示不正确的文本。代码与我之前发布的完全相同,除了所有[_nextBarButtonItem setHidden:]调用都被注释掉了。

1 个答案:

答案 0 :(得分:1)

好的,在我们尝试任何过于激烈的事情之前,这里有一些非编码解决方案(我确定你已经尝试过这些,但是再给这些拍摄其中之一永远不会太晚。:D)

  • 使用“产品”>尝试“清理”您的缓存/目标“清洁”。
  • 您是在SIM卡上还是在有形的iOS设备上进行测试?如果你在模拟器上,运行项目,选择“iOS模拟器”(从屏幕顶部)> “重置内容和设置”。
  • 如果这些不起作用,你可以将项目放在GitHub上,我会下载/看看它。你永远不会知道,可能是那些奇怪的Xcode怪癖之一! ;)

对不起基本的解决方案。对我个人而言,如果没有实际的文件,很难解决问题。对不起!