ios - 更改导航栏上 UIButton 的标题,瞬间 iOS 出现错误标题

标签 ios objective-c uibutton uibarbuttonitem

在注册期间,我的 iOS 应用程序中有一个 View Controller ,用户可以选择跳过。但是,如果他们开始该步骤,则他们要么必须完成它,要么点击撤消,这样就不会保存部分信息。为了确保这一点,我隐藏了转到下一个屏幕的导航栏按钮。一开始,我的文字是“跳过”,然后当你开始输入信息时,它就消失了,一旦你输入了足够的信息,标题就会变成“下一步”。它也向后工作。您可以输入足够的信息让“下一步”出现,然后点击撤消,按钮消失,继续点击撤消,按钮应该再次显示“跳过”。

问题是,当按钮重新出现时,在更改为新标题之前的一瞬间,它仍然具有旧标题。所以它会说“跳过”,用户开始输入信息,它消失,用户输入所有信息,然后它重新出现,说“跳过”一瞬间,然后变为“下一步”。

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

-(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 的标题,但我想也许当按钮出现时它处于不同的状态,所以我尝试添加每个状态...

有什么可能出错的想法吗?我不会在其他可能有冲突的地方更改标题。

我很感激任何提示。

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

最佳答案

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

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

很抱歉基本的解决方案。就我个人而言,没有手头的实际文件很难解决问题。抱歉!

关于ios - 更改导航栏上 UIButton 的标题,瞬间 iOS 出现错误标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29450096/

相关文章:

iphone - 具有动态对象数的自定义 TableView 单元格创建

ios - 处理按钮状态

ios - 除了 `UserDefaults` 之外,还有其他方法可以在 `Today Widget Extension` 和 iOS 中的主要 `Container Application` 之间共享数据吗

ios - 当我放手时,我的 UIScrollView 弹回顶部

objective-c - 创建一个整数数组,其大小基于 NSArray 的大小

ios - 如何在 iOS 上更改 UISearchBar 组件的内部背景颜色

ios - Swift - UIButton 覆盖 setSelected

iphone - 由 Interface Builder 创建的 UIButton 崩溃了

ios - 从 UITableView 点击后将配件按钮变成不同的配件

c# - IOS数据仅在iphone 5s ios 9.1模拟器中显示,但数据在其他模拟器中不显示