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];

}

到目前为止,您有一个包含所有名字的表格视图。确保在协议UITableViewDataSourceUITableViewDelegate. 还要确保firstNames在头文件中将数组声明为属性,以确保在整个 .m 文件中都可以访问它,因为如果不这样做,则无法在cellForRowAtIndexPath:方法中访问它。

要实现自动补全,请按照此处关于自定义自动补全值的 Ray Wenderlich 的教程进行操作。然后使用人们的名字数组作为自定义值。

于 2012-06-19T17:33:35.740 回答