在UITextField值更改时立即填充UITableview数据

时间:2014-07-07 13:02:06

标签: ios

我是IOS的新手。

我希望在Facebook上实现类似于Google地方自动填充的功能。每次按键时,适当的数据会立即填充。我编写了一个函数,根据我的UITextField中的值填充数据。但是一旦用户点击“返回”键就会发生这种情况。 (因为我在“textFieldDidEndEditing”委托方法上调用了这个函数)。因此,我需要帮助知道调用我的函数的位置(哪个委托方法)根据我的UITextField中的文本更改立即填充相应的UITableView数据。

- (void)MyFunctionToGetData
{
    MyJSONURL = [NSString stringWithFormat:@"www.myurl.com?input=%@",txtMyText.text];
    dispatch_async(GDQueue, ^{Mydata = [NSMutableData dataWithContentsOfURL:[NSURL URLWithString: MyJSONURL]];
[self performSelectorOnMainThread:@selector(fetchedData:) withObject: Mydata waitUntilDone:YES]; });
}

- (void)MyFunctionTofetchedData:(NSMutableData *)responseData
{
NSError* error;    
MyArray = [NSJSONSerialization JSONObjectWithData: Mydata options:kNilOptions error:&error];
[tblMyTable reloadData];
}

//TableView delegate methods start
-(int)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

-(int)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [MyArray count];
}

-(UITableViewCell *) tableView:(UITableView *) tableView cellForRowAtIndexPath:    (NSIndexPath *)indexPath
{
 static NSString *CellIdentifier = @"Cell";
 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];   
 if (cell==nil)
{    
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSString * strDataText = [[MyArray objectAtIndex:indexPath.row] valueForKey:@“myKey"];           cell.textLabel.text = strDataText;   
return cell;

  }

  // I am calling my function here. By doing this i can get results once i edit the text and then click “Return” key. Whereas i want the different result on each key press action on that textfield.

  - (void)textFieldDidEndEditing:(UITextField *)textField

  {
   [self MyFunctionToGetData];


  }

谢谢!

2 个答案:

答案 0 :(得分:1)

[textField addTarget:self action:@selector(textFieldDidChange:)forControlEvents:UIControlEventEditingChanged]; 

并在方法中

-(void)textFieldDidChange :(UITextField *)theTextField{
NSLog( @"text changed: %@", theTextField.text);
}

您可以在文本字段中看到当前文本。每次用户键入新的char时,您都会填充tableView

答案 1 :(得分:1)

好的,这样,您应该使用以下TextField委托方法:

textField:shouldChangeCharactersInRange:replacementString:



- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSLog(@"%@",textField.text);
return YES;

},每次按下键盘按钮时都会调用此方法。希望它会有所帮助