在注册期间,我的 iOS 应用程序中有一个 View Controller ,用户可以选择跳过。但是,如果他们开始该步骤,他们要么必须完成它,要么点击撤消,这样部分信息就不会被保存。为了确保这一点,我隐藏了转到下一个屏幕的导航栏按钮。起初,我的文字是“SKIP”,然后当你开始输入信息时,它就会消失,一旦你输入了足够的信息,标题应该会变成“NEXT”。它也可以向后工作。你可以输入足够的信息让“NEXT”出现,然后点击撤消,按钮消失,继续点击撤消,按钮应该再次显示“跳过”。
问题是,当按钮重新出现时,它仍然具有旧标题,然后再更改为新标题。所以它会说“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 在 View 层次结构中出现的 UIBarButtonItem。我最初只是设置了 UIControlStateNormal 的标题,但我想可能当按钮出现时它处于不同的状态,所以我尝试添加每个状态...
有什么想法可能会出错吗?我不会在其他可能有冲突的地方更改标题。
感谢任何提示。
edit - 我已经尝试更改它,以便只更改 _nextButton 的 hidden 属性,因此 _nextBarButtonItem 的 enabled 属性始终处于打开状态。这允许相同的功能(因为 _nextButton 是隐藏的,所以您不能按下它),但它仍然只显示不正确的文本一瞬间。代码与我之前发布的完全相同,只是所有 [_nextBarButtonItem setHidden:] 调用都被注释掉了。
好的,在我们尝试任何过于激烈的事情之前,这里有一些非编码解决方案(我相信您已经尝试过这些,但再尝试其中一个永远不会太晚。)
对不起,基本解决方案。就我个人而言,没有手头的实际文件很难解决问题。对不起!
关于ios - 在导航栏上更改 UIButton 的标题,一瞬间出现错误的标题 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29450096/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |