2015-04-23 48 views
1

在我的ios應用程序中,有3個單獨的文本輸入字段。一個在搜索欄中,另一個在UIAlertview中(有兩個輸入字段)。我需要在可向用戶提供建議的字段下方提供一個下拉菜單。我有一個數組需要的數據(所有3個字段需要相同的數組作爲建議)。我將如何做到這一點?我是否應該以編程方式創建出現在所有TextFields下面的UITableView(帶有最基本的單元格,包含一個文本字段)?如果是這樣,我怎樣才能得到正確的框架?否則,我應該提及哪些其他方法?在UISearchbar和UITextfields下面添加一個下拉建議

回答

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"); 
    }]; 

} 
+0

的一個主要問題仍然是對內部UIAlertView中me..the的UITextField不調用的方法 - (空)textFieldDidBeginEditing:(*的UITextField)文本框 –

+0

你需要顯示UIAlertView中的每一件事情..?你如何將textFields添加到AlertView .. ?? – user4261201