下面添加一个UISearchBar和UITextfields一个下拉建议(Add a drop do

2019-10-22 18:32发布

在我的iOS应用程序,有3个独立的文本输入字段。 一个在搜索栏和两个在UIAlertView中(即有两个输入字段)。 我需要给一个下面的下拉,可以给建议给用户的字段菜单。 我在阵列所需要的数据(所有3个字段需要建议相同的阵列)。 我会怎么做呢? 我应该编程方式创建,将出现在所有的TextField的下方(最基础的细胞,包含一个文本字段)一个UITableView? 如果是这样,我怎么能得到正确的框架? 否则,我应该是指什么其他的方法?

Answer 1:

下面是一个简单的例子。 在这里,我以一个的UITextField。 当它成为第一个响应者,我显示的下拉即UITableView的。 当从表中选择的对象查看下拉就会崩溃。

- (void)viewDidLoad
{
   [super viewDidLoad];
   // Do any additional setup after loading the view, typically from a nib.


   mutArr=[[NSMutableArray alloc]init];
   [mutArr addObject:@"object1"];
   [mutArr addObject:@"object2"];
   [mutArr addObject:@"object3"];
   [mutArr addObject:@"object4"];
   [mutArr addObject:@"object5"];
   [mutArr addObject:@"object6"];
   [mutArr addObject:@"object7"];
   [mutArr addObject:@"object8"];


   txtList1=[[UITextField alloc]init];
   [txtList1 setFrame:CGRectMake(30, 100, 260, 30)];
   [txtList1 setTag:100];
   [txtList1 setDelegate:self];
   [txtList1 setBackgroundColor:[UIColor brownColor]];
   [txtList1 setTextColor:[UIColor whiteColor]];
   [self.view addSubview:txtList1];

   tblList=[[UITableView alloc]init];
   [tblList setDelegate:self];
   [tblList setDataSource:self];
   [self.view addSubview:tblList];

}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   return mutArr.count;
}


  -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {

   UITableViewCell *cell=[[UITableViewCell alloc]init];
   [cell setBackgroundColor:[UIColor grayColor]];
   cell.textLabel.textColor=[UIColor whiteColor];
   cell.textLabel.text=[mutArr objectAtIndex:indexPath.row];

   return cell;

 }


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   UITableViewCell *cell=[tblList cellForRowAtIndexPath:indexPath];
   txtList1.text=cell.textLabel.text;

   [txtList1 resignFirstResponder];
   [self collapseTableView];


}


- (void)textFieldDidBeginEditing:(UITextField *)textField
{
   [textField resignFirstResponder];

   if (textField.tag==100)
   {
       CGRect rect=tblList.frame;
       if (rect.size.height==0)
       {
          [self expandTableView];

       }
   }

}


-(void)collapseTableView
{

   [tblList setFrame:CGRectMake(30, 130, 260, 120)];
   [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionTransitionNone
                 animations:^{

       [tblList setFrame:CGRectMake(30, 130, 260, 0)];

    }
   completion:^(BOOL finished)
    {
       NSLog(@"comleted");
    }];

}

-(void)expandTableView
{
   [tblList setFrame:CGRectMake(30, 130, 260, 0)];
   [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionTransitionNone
                 animations:^{

      [tblList setFrame:CGRectMake(30, 130, 260, 200)];

    }
    completion:^(BOOL finished)
    {
       NSLog(@"comleted");
    }];

}


文章来源: Add a drop down suggestion below a UISearchbar and UITextfields