2014-09-11 1 views
0

사용자가 행을 선택하면 (테이블이 하나의 배열로만 구성됨) 다른 VC로 이동하도록 설정된 UITableView가 있습니다. 선택한 항목의 행 인덱스를 전달하고 싶습니다. didSelectRowAtIndexPath을 사용하여 selectedCellIndex이라는 변수를 행 인덱스에 설정합니다. 그러나, 나는 또한 다음 VC로 이동하도록 tableView를 설정 했으므로 prepareForSeguedidSelectRowAtIndexPath과 같이 (또는 거의 같은 시간에) 발생합니다. 결과적으로 목록에서 항목을 처음 선택하면 전송 된 값은 nil이되고 나면 선택한 행의 이전 값을 항상 가져옵니다. 앱이 일시 중지하지 않고 다음 세그먼트로 넘어 가기 전에 변수가 설정되었는지 확인하는 방법에 대한 아이디어가 있습니까? 당신은 직접 indexPathForSelectedRow 방법을 사용하여 테이블보기에서 선택된 인덱스 경로를 얻을 수 있습니다세그 전이 발생하기 전에 변수를 설정하십시오.

var selectedCellIndex:Int! 

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){ 
    var indexPath = tableView.indexPathForSelectedRow() as NSIndexPath? 
    selectedCellIndex = indexPath?.row as Int? 
} 


//SEGUE 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "signature" { 
     let vc = segue.destinationViewController as SignatureViewController 
     vc.index = "\(selectedCellIndex)" 
    } 
} 

감사

답변

0

:

여기 내 코드입니다. 선택한 인덱스를 저장하기 위해 didSelectRowAtIndexPath을 구현할 필요가 없습니다.

prepareForSegue: 메서드는 전환에 필요한 변수를 설정하거나 액세스해야하는 유일한 방법입니다.

+0

Yeap, 당신 말이 맞아요. 이게 어리석은 질문 인거 같아. – boidkan

관련 문제