2
我想在我的應用程序中自動填充UITextFiled。在用戶輸入某個字母時,它會調用Web服務並在UIpPickerView中顯示響應,以便搜索城市。當我們輸入任何字母時,會顯示一些城市名稱。任何人都可以知道如何去做?請幫幫我。如何在iPhone中使用異步Web服務調用自動完成TextField?
我想在我的應用程序中自動填充UITextFiled。在用戶輸入某個字母時,它會調用Web服務並在UIpPickerView中顯示響應,以便搜索城市。當我們輸入任何字母時,會顯示一些城市名稱。任何人都可以知道如何去做?請幫幫我。如何在iPhone中使用異步Web服務調用自動完成TextField?
從服務器獲取數據不同步,你可以使用NSURLConnection
和NSURLConnectionDelegate
方法
在接口文件:
@interface ViewController : UIViewController<NSURLConnectionDelegate, UITextFieldDelegate> {
NSMutableData *mutableData;
}
-(void)getDataUsingText:(NSString *)text;
@end
在實現文件:
@implementation ViewController
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *value =[textField.text stringByReplacingCharactersInRange:range withString:string];
[self getDataUsingText:value];
return YES;
}
-(void)getDataUsingText:(NSString *)text;
{
NSString *urlString = [NSString stringWithFormat:@"http://...."];
NSURL *url =[NSURL URLWithString:urlString];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[conn start];
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
mutableData = [[NSMutableData alloc] init];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[mutableData appendData:data];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *dataString = [[NSString alloc] initWithData:mutableData encoding:NSUTF8StringEncoding];
NSLog(@"your data from server: %@", dataString);
// Here you got the data from server asynchronously.
// Here you can parse the string and reload the picker view using [picker reloadAllComponents];
}
@end
必須委託設爲文本字段,您必須使用NSURLConnectionDelegate
方法中的數據實現選取器。而this是加載選取器視圖的教程。
非常感謝.. :)我得到了你的解決方案...... :) – python 2012-08-14 03:35:39