0

画像ではこのようなオートコンプリートという名前の検索バーを作成しようとしています。

吹き出しのオートコンプリート

どうすればこれを達成できるか考えている人はいますか?

4

2 に答える 2

2

オープン ソース ライブラリThree20TTMessageControllerと をご覧ください。それはまさにあなたが望むものです:TTMessageRecipientField

TTMessageController の例

于 2012-06-19T17:19:41.427 に答える
0

まず、連絡先の名前の配列が必要です。

//Add Address Book framework    

#import <AddressBook/AddressBook.h>

--------------------

ABAddressBookRef addressBook = ABAddressBookCreate();
NSArray *allPeople = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);

NSMutableArray *firstNames = [NSMutableArray alloc] init];

for(NSUInteger personIndex = 0; personIndex <= [allPeople count]; personIndex++){

    ABRecordRef person = (__bridge ABRecordRef)[allPeople objectAtIndex: incrementer];

    firstNameString = (__bridge_transfer NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);

    [firstNames addObject: firstNameString];
}

したがって、firstNames配列にはすべての人々の配列が含まれるようになりました。

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

    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];

    if (cell == nil) 
{
        cell = [[UITableViewCell alloc] initWithFrame:CGRectMake(your, values, go, here) reuseIdentifier:@"MyIdentifier"];
    }

    cell.text = [firstNames objectAtIndex: indexPath.row];

}

ここまでで、最初の名前がす​​べて表示されたテーブルビューができました。UITableViewDataSourceプロトコルおよびに他の必要なメソッドを実装していることを確認してくださいUITableViewDelegate。また、ヘッダー ファイルで配列をプロパティとして宣言し、.m ファイル全体でアクセスできるようにしてください。そうしないと、メソッドfirstNamesでアクセスできないためです。cellForRowAtIndexPath:

オートコンプリートを実装するには、Ray Wenderlich のカスタム オートコンプリート値に関するこちらのチュートリアルに従ってください。次に、人の名の配列をカスタム値として使用します。

于 2012-06-19T17:33:35.740 に答える