title: ViewWillDisappear not getting called searchcontroller
body: <p>When I'm in the middle of a search and then switch UItabs, ViewWillDisappear does not get called.   Any idea as to why ViewWillDisappear does not get called when I have filtered results displaying and switch tabs?</p>
  
  <pre><code>func updateSearchResultsForSearchController(searchController: UISearchController) {
    if self.searchController?.searchBar.text.lengthOfBytesUsingEncoding(NSUTF32StringEncoding) &gt; 0 {
          if let results = self.results {
              results.removeAllObjects()
          } else {
              results = NSMutableArray(capacity: MyVariables.dictionary.keys.array.count)
          }
  
          let searchBarText = self.searchController!.searchBar.text
  
          let predicate = NSPredicate(block: { (city: AnyObject!, b: [NSObject : AnyObject]!) -&gt; Bool in
              var range: NSRange = NSMakeRange(0, 0)
              if city is NSString {
  
                  range = city.rangeOfString(searchBarText, options: NSStringCompareOptions.CaseInsensitiveSearch)
              }
  
              return range.location != NSNotFound
          })
  
          // Get results from predicate and add them to the appropriate array.
          let filteredArray = (MyVariables.dictionary.keys.array as NSArray).filteredArrayUsingPredicate(predicate)
          self.results?.addObjectsFromArray(filteredArray)
  
  
          // Reload a table with results.
          self.searchResultsController?.tableView.reloadData()
      }
  }
  
  
  
  
  override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&gt; UITableViewCell {
      let cell = tableView.dequeueReusableCellWithIdentifier(self.identifier) as! UITableViewCell
  
      var text: String?
      var imgtext:AnyObject?
      if tableView == self.searchResultsController?.tableView {
          if let results = self.results {
              text = self.results!.objectAtIndex(indexPath.row) as? String
             imgtext = MyVariables.dictionary[text!]
              let decodedData = NSData(base64EncodedString: imgtext! as! String, options: NSDataBase64DecodingOptions(rawValue: 0) )
              var decodedimage = UIImage(data: decodedData!)
  
  
              cell.imageView?.image = decodedimage
          }
      } else {
          text = MyVariables.dictionary.keys.array[indexPath.row] as String
      }
  
      cell.textLabel!.text = text
  
  
      return cell
  }
  </code></pre>
  
  <p>On the Load</p>
  
  <pre><code>  override func viewDidLoad() {
      super.viewDidLoad()
  
      let resultsTableView = UITableView(frame: self.tableView.frame)
      self.searchResultsController = UITableViewController()
      self.searchResultsController?.tableView = resultsTableView
      self.searchResultsController?.tableView.dataSource = self
      self.searchResultsController?.tableView.delegate = self
  
      // Register cell class for the identifier.
      self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: self.identifier)
      self.searchResultsController?.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: self.identifier)
  
      self.searchController = UISearchController(searchResultsController: self.searchResultsController!)
      self.searchController?.searchResultsUpdater = self
      self.searchController?.delegate = self
      self.searchController?.searchBar.sizeToFit()
      self.searchController?.hidesNavigationBarDuringPresentation = false;
      self.tableView.tableHeaderView = self.searchController?.searchBar
      self.definesPresentationContext = true
  
  }
  </code></pre>