在注册期间,我的 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 - 更改导航栏上 UIButton 的标题,瞬间 iOS 出现错误标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29450096/
如何正确创建Rails迁移,以便将表更改为MySQL中的MyISAM?目前是InnoDB。运行原始执行语句会更改表,但它不会更新db/schema.rb,因此当在测试环境中重新创建表时,它会返回到InnoDB并且我的全文搜索失败。我如何着手更改/添加迁移,以便将现有表修改为MyISAM并更新schema.rb,以便我的数据库和相应的测试数据库得到相应更新? 最佳答案 我没有找到执行此操作的好方法。您可以像有人建议的那样更改您的schema.rb,然后运行:rakedb:schema:load,但是,这将覆盖您的数据。我的做法是(假设
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我尝试使用不同的ssh_options在同一阶段运行capistranov.3任务。我的production.rb说:set:stage,:productionset:user,'deploy'set:ssh_options,{user:'deploy'}通过此配置,capistrano与用户deploy连接,这对于其余的任务是正确的。但是我需要将它连接到服务器中配置良好的an_other_user以完成一项特定任务。然后我的食谱说:...taskswithoriginaluser...task:my_task_with_an_other_userdoset:user,'an_othe
我有一张背景图片,我想在其中添加一个文本框。我想弄清楚如何将标题放置在其顶部的正确位置。(我使用标题是因为我需要自动换行功能)。现在,我只能让文本显示在左上角,但我需要能够手动定位它的开始位置。require'RMagick'require'Pry'includeMagicktext="Loremipsumdolorsitamet"img=ImageList.new('template001.jpg')img 最佳答案 这是使用convert的ImageMagick命令行的答案。如果你想在Rmagick中使用这个方法,你必须自己移植
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
假设我有一个FireNinja我的数据库中的对象,使用单表继承存储。后来才知道他真的是WaterNinja.将他更改为不同的子类的最干净的方法是什么?更好的是,我很想创建一个新的WaterNinja对象并替换旧的FireNinja在数据库中,保留ID。编辑我知道如何创建新的WaterNinja来self现有FireNinja的对象,我也知道我可以删除旧的并保存新的。我想做的是改变现有项目的类别。我是通过创建一个新对象并执行一些ActiveRecord魔法来替换行,还是通过对对象本身做一些疯狂的事情,或者甚至通过删除它并使用相同的ID重新插入来做到这一点,这是问题的一部分。
我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm