2016-08-29 2 views
-2

사용자가 셀을 클릭하면 다른 viewController가 열리 며 응용 프로그램을 가지고 있으며 내 tableview에 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

선택한 항목을 얻을 수있는 더 좋은 방법은 SEGUE 위임

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