菜鸟教程小白 发表于 2022-12-12 12:35:08

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


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

<p>下面是2个UIButton的图片,在这些UIButton中间还有一个叫<strong>OnRoute</strong>。一旦按下 Acknowledged 按钮,它就会被隐藏,向其发送状态并显示 OnRoute UIButton。现在 Acknowledged 按钮已隐藏,您只会在屏幕上的 Runsheet 按钮下看到 OnRoute 按钮,您也按下该按钮会发送状态,然后自行隐藏。 </p>

<p>一旦按下这些按钮,您就会被发送到 UITableView,此时一切正常,但是当您返回菜单屏幕时,按钮会重新出现,就好像这些按钮没有被按下一样。并且您可以一遍又一遍地重复发送状态。</p>

<p>这样做的目的是在按下按钮后发送作业状态,然后在服务器上的软件上显示。一旦发送了这些并且 UIButtons 隐藏了该工作编号,我希望将它们隐藏起来,直到工作从手中消失。</p>

<p>这是一个复杂的问题,但如果有人对此有任何想法,我将不胜感激。</p>

<p><strong>//这是在ViewDidLoad中</strong></p>

<pre><code>self.onroute.hidden = YES;
NSNumber *num = ;

self.acknow.hidden = YES;

if((self.consignment.cur_status_no &lt; num) || ){

    self.acknow.hidden = NO;
</code></pre>

<p><strong>//这是在IBAction中</strong></p>

<pre><code>- (IBAction)acknowledgebtn:(id)sender {


    if (self.onroute.hidden == YES){
      self.acknow.hidden = NO;
      self.onroute.hidden = NO;
      self.acknow.hidden = YES;
</code></pre>

<p><strong>//这是另一个IBAction</strong></p>

<pre><code>if (self.acknow.hidden == YES){
    self.onroute.hidden = YES;
</code></pre>

<p>由于我是该网站的新手,因此我不会发布 UIButton 的图片,对此感到抱歉。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我的建议是使用一些 bool 值而不是依赖按钮隐藏属性。然后在转移到新 View 时保存 bool 值。然后当您返回主菜单时,检查 bool 值,看看哪些应该隐藏,哪些不应该隐藏。</p>

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

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

<p>在你的 .h</p>

<pre><code>@property (nonatomic) BOOL onrouteBool;
@property (nonatomic) BOOL acknowBool;
//whatever other bools you need instead of using button.hidden == YES/NO
</code></pre>

<p>在您的 .m 中</p>

<pre><code>@synthesize onrouteBool, acknowBool;

-(void)viewDidLoad {
    onrouteBut.hidden = YES;
    onrouteBool = YES;

    NSNumber *num = ;

    acknowBut.hidden = YES;
    acknowBool = YES;

    if((self.consignment.cur_status_no &lt; num) || ) {

      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&#39;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;

    }

}
</code></pre>

<p>所以现在在你转换到下一个 View 之前调用这个方法来保存 bool 值</p>

<pre><code>-(void)saveTheBools {

    //save the bools however you want before you transition the view
    //one way is nsuserdefaults

    [setBool:onrouteBool forKey:@&#34;onrouteBool&#34;];
    [setBool:acknowBool forKey:@&#34;acknowBool&#34;];

    [synchronize];
    //how you save them

}
</code></pre>

<p>然后当您转换回主菜单时,检查 bool 值以查看是否应隐藏按钮</p>

<pre><code>-(void)checkTheBools {

    onrouteBool = [ boolForKey:@&#34;onrouteBool&#34;];
    acknowBool = [ boolForKey:@&#34;acknowBool&#34;];

    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
}
</code></pre>

<p>这只是为了给你一些关于做什么的想法。使用你需要的东西来让它工作。我就是这样做的,我不知道这是否是最好的方法,但这是一个起点。如果没有看到你所有的代码,我真的无法给出具体的答案,因为我不知道你是如何转换 View 的,你在初始化什么,保留什么等等。</p>

<p>希望这对您有所帮助,如果不是我的坏话。只要继续努力,你最终会找到适合你的东西。 </p>

<p>编辑:</p>

<p>至于您遇到的状态问题,我真的无能为力,因为我没有要查看的代码。我认为这可能与保存变量有关,以便您可以跨类访问它们。因此,就像我向您展示了如何保存 bool 值并使用它们一样,您可能必须执行类似的操作来检查状态是否已发送。 </p>

<p>我建议使用 nsuserdefaults,因为这是最容易做的事情,但是依靠它来保存所有变量并不是最好的。您还可以查看单例、核心数据或任何允许您跨类保存所需变量的东西。你只需要找到最适合你想要做的事情的方式。 </p>

<p>您要学习的唯一方法是有时努力奋斗,做一些研究,并尝试不同的事情,直到找到解决方案。还可以利用苹果为开发人员提供的资源。我想你将能够弄清楚这一点。祝你好运</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 重新加载 UITableView 时显示隐藏的 UIButton,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/26834082/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/26834082/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 重新加载 UITableView 时显示隐藏的 UIButton