我希望在 UIButtons 保持 .hidden 方面得到一些帮助。我是这个网站的新手,所以请给我一分钟时间来最好地描述我面临的这个问题。
下面是2个UIButtons的图片,在这些UIButtons的中间还有一个叫做OnRoute。一旦按下 Acknowledged 按钮,它就会隐藏,向其发送状态并显示 OnRoute UIButton。现在 Acknowledged 按钮被隐藏了,您将只能在屏幕上的 Runsheet 按钮下方看到 OnRoute 按钮,您也可以按该按钮发送状态,然后自行隐藏。
按下这些按钮后,您将被发送到 UITableView,此时一切正常,但是当您返回菜单屏幕时,按钮会重新出现,就好像按钮没有被按下一样。您可以一遍又一遍地重复发送状态。
这个想法是在按下按钮后发送作业状态,然后显示在服务器上的软件上。一旦发送了这些并且 UIButtons 隐藏了该工作编号,我想保持它们隐藏,直到工作从手持设备中消失。
这是一个复杂的问题,但如果有人对此有任何想法,我将不胜感激。
//这个在ViewDidLoad里
self.onroute.hidden = YES;
NSNumber *num = [NSNumber numberWithInt:10.00];
self.acknow.hidden = YES;
if((self.consignment.cur_status_no < num) || [self.consignment.newjob isEqual:@(YES)]){
self.acknow.hidden = NO;
//这是在IBAction中
- (IBAction)acknowledgebtn:(id)sender {
if (self.onroute.hidden == YES){
self.acknow.hidden = NO;
self.onroute.hidden = NO;
self.acknow.hidden = YES;
//这是给另一个IBAction的
if (self.acknow.hidden == YES){
self.onroute.hidden = YES;
因为我是这个网站的新手,所以它不允许我发布 UIButton 的图片,对此感到抱歉。
最佳答案
我的建议是使用一些 bool 值而不是依赖按钮的隐藏属性。然后在转移到新 View 时保存 bool 值。然后,当您返回主菜单时,检查 bool 值并查看应该隐藏什么,不应该隐藏什么。
此外,当我命名变量时,我喜欢假装其他人正在查看我的代码。因此,我不会将 onroute 作为按钮名称,而是将其设为 onrouteBut。这也让我在回顾我的代码时变得更容易,所以我只需查看名称就可以确切地知道每个变量是什么。
至于代码,我不知道你是如何表达观点的,所以我不能给出一个完整的答案。但我认为这会有所帮助。
在你的 .h 中
@property (nonatomic) BOOL onrouteBool;
@property (nonatomic) BOOL acknowBool;
//whatever other bools you need instead of using button.hidden == YES/NO
在你的.m
@synthesize onrouteBool, acknowBool;
-(void)viewDidLoad {
onrouteBut.hidden = YES;
onrouteBool = YES;
NSNumber *num = [NSNumber numberWithInt:10.00];
acknowBut.hidden = YES;
acknowBool = YES;
if((self.consignment.cur_status_no < num) || [self.consignment.newjob isEqual:@(YES)]) {
acknowBut.hidden = NO;
acknowBool = NO;
}
}
-(IBAction)acknowledgeBtn:(id)sender {
if (onrouteBool == YES) {
acknowBut.hidden = NO;
onrouteBut.hidden = NO;
acknowBool = NO;
onrouteBool = NO;
//this part doesn't make sense you set the button to visible and then hidden right after
acknowBut.hidden = YES;
acknowBool = YES;
}
}
-(IBAction)onrouteBtn:(id)sender {
if (acknowBool == YES) {
onrouteBut.hidden = YES;
onrouteBool = YES;
}
}
所以现在在你转换到你的下一个 View 之前调用这个方法来保存 bool 值
-(void)saveTheBools {
//save the bools however you want before you transition the view
//one way is nsuserdefaults
[[NSUserDefaults standardUserDefaults]setBool:onrouteBool forKey:@"onrouteBool"];
[[NSUserDefaults standardUserDefaults]setBool:acknowBool forKey:@"acknowBool"];
[[NSUserDefaults standardUserDefaults]synchronize];
//how you save them
}
然后当你转换回主菜单时,检查 bool 值以查看是否应隐藏按钮
-(void)checkTheBools {
onrouteBool = [[NSUserDefaults standardUserDefaults] boolForKey:@"onrouteBool"];
acknowBool = [[NSUserDefaults standardUserDefaults] boolForKey:@"acknowBool"];
if (onrouteBool == YES) {
onrouteBut.hidden = YES;
}
else {
onrouteBut.hidden = NO;
}
if (acknowBool == YES) {
acknowBut.hidden = YES;
}
else {
acknowBut.hidden = NO;
}
//whatever else you need to hidden or make visible
}
这一切只是为了让您了解该怎么做。使用你需要的东西让它工作。这就是我要做的,我不知道这是否是最好的方法,但这是一个起点。如果没有看到您的所有代码,我真的无法给出具体的答案,因为我不知道您如何转换 View 、您正在初始化、保留什么等等。
希望这对您有所帮助,即使不是我的坏处。只要继续努力,你最终会找到适合你的东西。
编辑:
至于您遇到的状态问题,我真的无能为力,因为我没有可查看的代码。我认为这可能与保存变量有关,以便您可以跨类访问它们。所以就像我向您展示了如何保存 bool 值并使用它们一样,您可能必须执行类似的操作来检查状态是否已发送。
我建议使用 nsuserdefaults,因为这是最简单的事情,但是依赖它来保存所有变量并不是最好的。您还可以查看单例、核心数据或任何可以让您跨类保存所需变量的东西。你只需要找到最适合你正在尝试做的事情的方式。
你要学习的唯一方法就是不时地挣扎,做一些研究,尝试不同的事情,直到找到解决方案。还可以利用 Apple 为开发人员提供的资源。我认为您将能够弄清楚这一点。祝你好运
关于ios - 隐藏的 UIButton 出现,重新加载 UITableView 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26834082/
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
这里有一个很好的答案解释了如何在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”结果的
我早就知道Ruby中的“常量”(即大写的变量名)不是真正常量。与其他编程语言一样,对对象的引用是唯一存储在变量/常量中的东西。(侧边栏:Ruby确实具有“卡住”引用对象不被修改的功能,据我所知,许多其他语言都没有提供这种功能。)所以这是我的问题:当您将一个值重新分配给常量时,您会收到如下警告:>>FOO='bar'=>"bar">>FOO='baz'(irb):2:warning:alreadyinitializedconstantFOO=>"baz"有没有办法强制Ruby抛出异常而不是打印警告?很难弄清楚为什么有时会发生重新分配。 最佳答案
我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
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