Hide empty cells in UITableView

I have a searchable tableview, but would like to only display the number of cells that are returned once a user starts a search. For instance, if a user types in a charecter and there is only one cell that matches the search, the remaining cells the remaining cells of the table are empty. I was wondering if there is a way to hide those empty cells. I was also wondering if there is a way to hide the table view if a person’s search does not match any data (by default, it displays a table of empty cells saying “No Results”).

Thanks.

  • Resizing UITextView in custom UITableViewCell
  • Build static Graphviz libraries for iOS
  • Objective C static class variables
  • Alternate Icon in iOS 10.3
  • Saving SecKeyRef device generated public/private key pair on disk
  • Should IBOutlets be ivars or properties?
  • 8 Solutions Collect From Internet About “Hide empty cells in UITableView”

    Change your implementation of tableView:numberOfRowsInSection: in your data source to return the number of search results instead of the total number of items. Then populate those cells with the search results instead of with the rest of the data.

    Set the tableFooterView to some dummy view ([[UIView new] autorelease] will work fine). This prompts the UITableView to show the footer (which will have zero size) in place of the empty ‘cells’.

    - (void) viewDidLoad
    {
      [super viewDidLoad];
     *// self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];*   
      *//Since memory management is controlled by ARC now, so ignore autorelease*
      self.tableView.tableFooterView = [[UIView alloc] init] ;
    }
    

    Simple you can use this..

    tableView.tableFooterView = [UIView new];
    

    For swift 2.x xCode 7 :

    override func viewDidLoad() {
            super.viewDidLoad()
            print("∙ \(NSStringFromClass(self.dynamicType))")
            ...
            self.tableView.tableFooterView = UIView()
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
           if (([array count]*65) > [UIScreen mainScreen].bounds.size.height - 66)
            {
              Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [array count]*65)); 
            }else
           {
             Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [UIScreen mainScreen].bounds.size.height - 66);
            }
            return [array count];
    }
    

    here 65 is the height of the cell and 66 is the height of the navigation bar in UIViewController.

    for swift in xcode

        cell.userInteractionEnabled = false
    

    place this in end of the cell for row at index of the table

    Hiding an empty cells in Swift

    Swift 3 Edition

     override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
    
        self.tableView.tableFooterView = UIView(frame: CGRect.zero)
    }
    

    Swift 2 Edition

     override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
    
        self.tableView.tableFooterView = UIView(frame: CGRectZero)
    }