2016-08-29 2 views
-2

ユーザーがセルをクリックすると別のviewControllerが開き、テーブルビューにuisearchcontrollerを追加するだけのアプリケーションがあります。didSelectRowAtIndexPath uisearchcontrollerを使用したインデックスパス

テーブルビューで検索すると、結果は正しく表示されますが、 ですが、フィルタリング後にセルをクリックすると、間違ったページが開きます。

私の問題はuiviewcontrollerが結果オープン正しいページを作成するアクティブなときに、私は今、どのように

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

     IndexPathRow = indexPath.row 


     performSegueWithIdentifier("toView2", sender: self) 
} 

indexpathを識別することはありませんです編集

私は新しいを追加することによって、私の問題を解決しました変数を整数型の構造体に格納してからdidSelectRowAtIndexPath関数を

に変更します。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

if resultSearchController.active && resultSearchController.searchBar.text != ""{ 

     IndexPathRow = filteredData[indexPath.row].i 
    } 

    else { 
     IndexPathRow = indexPath.row 

    } 

    performSegueWithIdentifier("toView2", sender: self) 

    } 
+0

詳細を入力する必要があります。さまざまなセルにあるもの(セル情報の配列のようなもの)を格納するためのある種のメソッドが必要です。次に、行は、配列内のその場所に位置する要素に対応することができます。 – Kendel

答えて

0

選択した項目を取得するためのより良い方法、あなたはあなたのメインアレイにデータを取得しているセグエデリゲート

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    performSegueWithIdentifier("toView2", sender: self) 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "toView2" { 
     let indexPath = self.tableView.indexPathForSelectedRow() { 
      print("IndexPathRow = \(indexPath.row)") 
      //destination controller code goes here ... 
     } 
    } 
} 
+0

indexPath.row – Basil

+0

で "この変数を独自の初期値の中で使用しました"というエラーが出てきました。このコードを 'didSelectRowAtIndexPath'で実行するのでしょうか?このコードを 'prepareForSegue'で実行してください。 – meda

0

indexPathForSelectedRow()メソッドを呼び出すことで、その後にのみ、検索配列でデータを取得しようその正しい、主配列に関連するすべてのメソッドのsearchController.isActive()を確認してください。基本的にこれをチェックしてください。prepareForSegue

関連する問題