uiviewcontroller中的多个DropDownList

时间:2016-07-15 10:22:40

标签: ios objective-c drop-down-menu

我在视图中有5个下拉列表。我想打开并关闭该drodownlist(UIView):
1.如果我点击第一个按钮,它将打开下拉列表,第二次点击它将关闭 2.如果在第一个按钮上打开一个下拉列表并点击第二个按钮,则第一个下拉列表将关闭,第二个下拉列表将打开。
我可以打开和关闭下拉列表(1)。但在第二种情况下,我无法做到。
这是我的代码。

          MimeEntity sig = mmsg.BodyParts.Where(x => x.IsAttachment && x.ContentType.Name != null && x.ContentType.Name.EndsWith(".p7s")).Select(x => x).ToArray()[0];
          MIME.MimeMessage mSig = new MIME.MimeMessage();
          mSig.LoadBody(sig.ToString());
          string cont = mSig.mContent;
          byte[] siCont = enc.GetBytes(cont);
          byte[ ] siCont64 = Convert.FromBase64String( cont );

          foreach ( MimeEntity me in mmsg.BodyParts )
          {
            if ( !me.IsAttachment ) continue;

            using ( MemoryStream ms2 = new MemoryStream( ) )
            {
              me.WriteTo( ms2 );
              ms2.Position = 0;

              MIME.MimeMessage msg2 = new MIME.MimeMessage();
              msg2.LoadBody(me.ToString());

              byte[] textb = enc.GetBytes(msg2.mContent);
              byte[] hashb = sha.ComputeHash(textb);

              ContentInfo inf = new ContentInfo(hashb);

              SignedCms cms = new SignedCms(inf, true);

              cms.Decode(siCont64);

              try
              {
                // CertificateManager is a custom class and returns a X509Certificate2-Collection based on a config in my app
                cms.CheckSignature( CertificateManager.GetCertificate( cfg ), false );

                MessageBox.Show("luck");
              }
              catch ( Exception ex )
              {
                 // hash is always wrong 
              }
            }
          }

这是动画下拉列表的功能

 if ([self.DropDownView  isDescendantOfView:self.view])
{


       [self dropDownCloseAnimation:sender withTF:nil];
        [self.DropDownView removeFromSuperview];
//        [self performSelector:@selector(showMenu:)  withObject:sender afterDelay:0.1];
    }
    else
    {
        [self.SinupView addSubview:self.DropDownView];
        [self dropDownAnimation:sender withTF:nil];
    }

4 个答案:

答案 0 :(得分:0)

你应该使用你的逻辑,如下,

-(void)btn1Click{
    Dropdown1Show=Yes;
    DropDown2Show=NO;
    DropDown3Show =NO;
    DropDown4Show=NO;
    }
    -(void)btn2Click{
    Dropdown1Show=NO;
    DropDown2Show=YES;
    DropDown3Show =NO;
    DropDown4Show=NO;
    }
    -(void)btn3Click{
    Dropdown1Show=NO;
    DropDown2Show=NO;
    DropDown3Show =YES;
    DropDown4Show=NO;
    }
    -(void)btn4Click{
    Dropdown1Show=NO;
    DropDown2Show=NO;
    DropDown3Show =NO;
    DropDown4Show=YES;
    }

答案 1 :(得分:0)

有不同的方法可以做到这一点,就像你可以使用一个下拉列表,并点击它的按钮更改框架和数据源。您可以使用tag属性来区分按钮和下拉列表。通过这种方式,您可以重用代码并轻松处理数据流。

感谢

答案 2 :(得分:0)

1-制作阵列

在屏幕上显示后,将每个下拉列表添加到数组

3-当你按下打开/关闭任何下拉列表的动作时,在我们刚刚做的数组上做一个循环

4-并在每次迭代时关闭每个下拉列表

5-打开发件人。

快乐的编码!

答案 3 :(得分:0)

试一下

This Drop down will help You.
https://github.com/BijeshNair/NIDropDown