• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 重新加载 UITableView 时显示隐藏的 UIButton

[复制链接]
菜鸟教程小白 发表于 2022-12-12 12:35:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我希望在 UIButtons 保持 .hidden 方面获得一点帮助。我是这个网站的新手,所以请给我一点时间来最好地描述我面临的这个问题。

下面是2个UIButton的图片,在这些UIButton中间还有一个叫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)acknowledgebtnid)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 的图片,对此感到抱歉。



Best Answer-推荐答案


我的建议是使用一些 bool 值而不是依赖按钮隐藏属性。然后在转移到新 View 时保存 bool 值。然后当您返回主菜单时,检查 bool 值,看看哪些应该隐藏,哪些不应该隐藏。

此外,当我命名变量时,我喜欢假装其他人会查看我的代码。因此,我不只是将 onroute 作为按钮名称,而是将其设为 onrouteBut。这也让我在回顾我的代码时更容易,因此我只需查看名称就知道每个变量的确切含义。

至于代码我不知道你是如何呈现 View 的,所以我无法给出完整的答案。但我认为这会有所帮助。

在你的 .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)acknowledgeBtnid)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)onrouteBtnid)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]setBoolnrouteBool 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,因为这是最容易做的事情,但是依靠它来保存所有变量并不是最好的。您还可以查看单例、核心数据或任何允许您跨类保存所需变量的东西。你只需要找到最适合你想要做的事情的方式。

您要学习的唯一方法是有时努力奋斗,做一些研究,并尝试不同的事情,直到找到解决方案。还可以利用苹果为开发人员提供的资源。我想你将能够弄清楚这一点。祝你好运

关于ios - 重新加载 UITableView 时显示隐藏的 UIButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26834082/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap