How to Impliment Search bar in Table view for Contacts in ios

i have following code in viewdidload

totalstring=[[NSMutableArray alloc]initWithObjects:@"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",@"i",@"j",@"k",@"l",@"m",@"n",@"n",@"o",@"p",@"q",@"r",@"s",@"s",@"t",@"u",@"v",@"w",@"x",@"y",@"z", nil];





indid=indidvalue1;

NSLog(@"the ind id value is %@",indid);

serviceCall=[[Services alloc]init];

NSString *contactsDisplay1=@"ContactDetails";

NSDictionary *contactsDisplayDetails1 =@{@"IND_ID":indid};

[serviceCall ContactsDisplayUrl:contactsDisplay1 ContactsDisplayDetails:contactsDisplayDetails1];
[serviceCall setDelegate:self];

code for implimenting search bar

  • <classes> element flipping in and out of existence in storyboard file
  • How do I show MKOverlay above MKAnnotations?
  • How to disable copy paste option from UITextField programmatically
  • Change frame programmatically with auto layout
  • Html string set into UILabel
  • fork() failed (1: Operation not permitted)
  • {
    
    
        filteredstring =[[NSMutableArray alloc]init];
    
        for (NSString *str in totalstring )
        {
    
         NSRange stringrange =[str rangeOfString:searchText options:NSCaseInsensitiveSearch];
    
            if(stringrange.location!= NSNotFound)
            {
                [filteredstring addObject:str];
            }
        }
    }
    [tableView reloadData];
    

    code for table view

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:simpleTableIdentifier];
    }
    if (tableView == self.searchDisplayController.searchResultsTableView)
    {
        cell.textLabel.text = [searchResultsArray objectAtIndex:indexPath.row];
    } else
    {
        UIFont *myfont=[UIFont fontWithName:@"Arial" size:35];
        cell.textLabel.text = [contactNameSplitDisplayArray objectAtIndex:indexPath.row];
        cell.detailTextLabel.text=[relationTypeSplitDisplayArray objectAtIndex:indexPath.row];
        cell.textLabel.font=myfont;
    }
    return cell;
    

    How can i implement search bar in table view for contacts in story board ?I am new to iOS
    ?
    and how to implement plus button and dots button within the table view?

    2 Solutions Collect From Internet About “How to Impliment Search bar in Table view for Contacts in ios”

    Devi my complete answer.It works perfectly.I use search bar.Also use that delegate methods.

    ViewController.h

    #import <UIKit/UIKit.h>
    #import <Contacts/Contacts.h> //Must import contact framework 
    
    @interface ViewController :  UIViewController<UISearchBarDelegate,UITableViewDataSource,UITableViewDelegate>
    @property (strong, nonatomic) IBOutlet UISearchBar *searchbarContacts;
    @property (strong, nonatomic) IBOutlet UITableView *tableViewContactData;
    @end
    

    ViewController.m

    #import "ViewController.h"
    
    @interface ViewController ()
    {
      NSMutableArray *arrayTableData;
      NSMutableArray *arraySearchContactData;
    }
    
    @end
    
    @implementation ViewController
    
    @synthesize tableViewContactData;
    
    @synthesize searchbarContacts;
    
    
    - (void)viewDidLoad 
    {
      [super viewDidLoad];
      // Do any additional setup after loading the view, typically from a nib.
      arrayTableData = [[NSMutableArray alloc]init];
      arraySearchContactData = [[NSMutableArray alloc]init];
      [self fetchContactsandAuthorization];
      [tableViewContactData registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
      [self.view addSubview:tableViewContactData];
    }
    
    //Fetching Contact and Authorization access
    
    -(void)fetchContactsandAuthorization
    {
      // Request authorization to Contacts
      CNContactStore *store = [[CNContactStore alloc] init];
      [store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
        if (granted == YES) {
            //keys with fetching properties
            NSArray *keys = @[CNContactFamilyNameKey, CNContactGivenNameKey, CNContactPhoneNumbersKey, CNContactImageDataKey];
            NSString *containerId = store.defaultContainerIdentifier;
            NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:containerId];
            NSError *error;
            NSArray *cnContacts = [store unifiedContactsMatchingPredicate:predicate keysToFetch:keys error:&error];
            if (error) {
                NSLog(@"error fetching contacts %@", error);
            } else {
                NSString *phone;
                NSString *fullName;
                NSString *firstName;
                NSString *lastName;
                UIImage *profileImage;
                NSMutableArray *contactNumbersArray = [[NSMutableArray alloc]init];
                for (CNContact *contact in cnContacts)
                {
                    // copy data to my custom Contacts class.
                    firstName = contact.givenName;
                    lastName = contact.familyName;
                    if (lastName == nil) {
                        fullName=[NSString stringWithFormat:@"%@",firstName];
                    }else if (firstName == nil){
                        fullName=[NSString stringWithFormat:@"%@",lastName];
                    }
                    else{
                        fullName=[NSString stringWithFormat:@"%@ %@",firstName,lastName];
                    }
                    UIImage *image = [UIImage imageWithData:contact.imageData];
                    if (image != nil) {
                        profileImage = image;
                    }else{
                        profileImage = [UIImage imageNamed:@"person-icon.png"];
                    }
                    for (CNLabeledValue *label in contact.phoneNumbers)
                    {
                        phone = [label.value stringValue];
                        if ([phone length] > 0) {
                            [contactNumbersArray addObject:phone];
                        }
                    }
                    NSDictionary* personDict = [[NSDictionary alloc] initWithObjectsAndKeys: fullName,@"fullName",profileImage,@"userImage",phone,@"PhoneNumbers", nil];
                    [arrayTableData addObject:[NSString stringWithFormat:@"%@",[personDict objectForKey:@"fullName"]]];
                    [arraySearchContactData addObject:[NSString stringWithFormat:@"%@",[personDict objectForKey:@"fullName"]]];
                    NSLog(@"The contactsArray are - %@",arrayTableData);
                }
                dispatch_async(dispatch_get_main_queue(), ^{
                    [tableViewContactData reloadData];
                });
            }
        }
    }];
    }
    
    - (void)didReceiveMemoryWarning
    {
      [super didReceiveMemoryWarning];
      // Dispose of any resources that can be recreated.
    }
    
    
    #pragma mark - UITableView Data Source Methods
    
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
      return 1;
    }
    
    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
      return  arrayTableData.count;
    }
    
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
       static  NSString *strCell = @"cell";
       UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:strCell];
       if(cell==nil)
       {
         cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:strCell];
       }
       cell.textLabel.text = arrayTableData[indexPath.row];
       return cell;
    }
    
    #pragma mark - SearchBar Delegate Methods
    
    -(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
    {
      @try
      {
        [arrayTableData removeAllObjects];
        stringSearch = @"YES";
        NSString *name = @"";
        if ([searchText length] > 0)
        {
            for (int i = 0; i < [arraySearchContactData count] ; i++)
            {
                name = [arraySearchContactData objectAtIndex:i];
                if (name.length >= searchText.length)
                {
                    NSRange titleResultsRange = [name rangeOfString:searchText options:NSCaseInsensitiveSearch];
                    if (titleResultsRange.length > 0)
                    {
                        [arrayTableData addObject:[arraySearchContactData objectAtIndex:i]];
                    }
                }
            }
        }
        else
        {
            [arrayTableData addObjectsFromArray:arraySearchContactData];
        }
        [tableViewContactData reloadData];
    }
    @catch (NSException *exception) {
    }
    }
    
    - (void)searchBarTextDidBeginEditing:(UISearchBar *)SearchBar
    {
      SearchBar.showsCancelButton=YES;
    }
    - (void)searchBarTextDidEndEditing:(UISearchBar *)theSearchBar
    {
      [theSearchBar resignFirstResponder];
    }
    
    - (void)searchBarCancelButtonClicked:(UISearchBar *)SearchBar
    {
      @try
      {
        SearchBar.showsCancelButton=NO;
        [SearchBar resignFirstResponder];
        [tableViewContactData reloadData];
      }
      @catch (NSException *exception) {
      }
    }
    - (void)searchBarSearchButtonClicked:(UISearchBar *)SearchBar
    {
      [SearchBar resignFirstResponder];
    }
    
    @end
    

    The Printed results For Contacts

    The contactsArray are - (
    "John Appleseed",
    "Kate Bell",
    "Anna Haro",
    "Daniel Higgins",
    "David Taylor",
    "Hank Zakroff"
    )
    

    Please Refer the below link, i can able to implement the search bar in table view by using this.

    http://www.appcoda.com/search-bar-tutorial-ios7/