2016-07-29 20 views
2

tableViewを検索しているときに、行を選択しようとするたびに、私は検索されていないtableViewに戻ります。私は何が欠けていますか?テーブルを通ってフィルタリングしないとき、segueは完全に機能します。 searchBarがアクティブになっている間は、行を選択する機能が無効になります。TableViewを検索する行を選択できません

import UIKit 
import Foundation 

class BenchmarkWODViewController: UITableViewController, UISearchResultsUpdating { 

    var WodList = [WOD]() 
    var FilteredWodList = [WOD]() 
    var Keyword = "" 
    var searchController : UISearchController? 
    var index = Int() 

    @IBAction func backButton(sender: AnyObject) { 
     self.navigationController?.popViewControllerAnimated(true) 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     for wodData in BenchmarkWODs.library { 
      let wod = WOD(dictionary: wodData) 
      WodList.append(wod) 
    } 

    // Search Bar 
     self.searchController = UISearchController(searchResultsController: nil) 
     self.searchController?.searchBar.autocapitalizationType = .None 
     self.tableView.tableHeaderView = self.searchController?.searchBar 
     self.searchController?.searchResultsUpdater = self 
     self.Keyword = "" 
     definesPresentationContext = true 

     self.filterByName() 
    } 


    func filterByName(){ 
     self.FilteredWodList = self.WodList.filter({ (wod: WOD) -> Bool in 
      if self.Keyword.characters.count == 0 { 
      return true 
     } 

     if (wod.name?.lowercaseString.rangeOfString(self.Keyword.lowercaseString)) != nil { 
      return true 
     } 
     return false 
    }) 
     self.tableView.reloadData() 
    } 


    // Search Bar Function 
    func updateSearchResultsForSearchController(searchController:  UISearchController) { 
     Keyword = searchController.searchBar.text! 
     self.filterByName() 
    } 



    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return self.FilteredWodList.count 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    { 
     let cell = tableView.dequeueReusableCellWithIdentifier("BenchmarkCell", forIndexPath: indexPath) as UITableViewCell 
     let wod = self.FilteredWodList[indexPath.row] 

     if let wodName = wod.name { 
     cell.textLabel?.text = wodName 
    } 
     return cell 
    } 



    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    self.filterByName() 
     self.performSegueWithIdentifier("showBenchmarkDetail", sender: nil) 
    } 

} 
+0

didselectrowatindexpathメソッドで検索コントローラを無効にしてください。 –

+0

なぜ 'didSelectRow'で' filterByName'を呼びますか? – Losiowaty

+0

検索バーデリゲート機能があります –

答えて

3

再生した後にそれを表示します。以下のコードを追加すると明らかに問題が修正されます。

searchController?.dimsBackgroundDuringPresentation = false 
関連する問題