画像ではこのようなオートコンプリートという名前の検索バーを作成しようとしています。
どうすればこれを達成できるか考えている人はいますか?
オープン ソース ライブラリThree20のTTMessageController
と をご覧ください。それはまさにあなたが望むものです:TTMessageRecipientField
まず、連絡先の名前の配列が必要です。
//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 のカスタム オートコンプリート値に関するこちらのチュートリアルに従ってください。次に、人の名の配列をカスタム値として使用します。