UITableView에서 UIViewController로 데이터를 전달하여 자세한 정보를 표시하려고합니다.UITableView에서 UIViewController로 segue로 데이터 전달하기
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "PassDetail" {
let vc = segue.destinationViewController as! ToDoListDetailViewController
let customIndexPath = self.tableView.indexPathForSelectedRow
vc.titleString = userList[userList.count - customIndexPath!.row - 1].Title
vc.descriptionString = userList[userList.count - customIndexPath!.row - 1].Description
}
}
나는 segue push depricated
을 만들고 적절한 식별자를 설정했습니다.
실행 후 아무런 변화가 없습니다. 충돌이 발생하지 않고 인쇄 방법을 설정하려고 시도했지만 셀을 탭하면 아무 것도 호출되지 않습니다.
필자의 문자열에 print 문을 전달할 값이 있는지보고 싶었고 print 문에서 음성을들을 수 없었습니다.
데이터가없는 경우에도 셀을 탭하면 앱이 중단되어야합니다. 그러나 그렇지 않습니다.
show
과 같은 다른 섹터를 사용해 보았지만 트릭을 수행하지 못했습니다.
코드에서 뭔가 빠졌습니까?
솔루션
나는 해결책을 찾아 냈다.
이것이 어떻게 작동하는지 이해하는 방법입니다. 위 코드는 데이터를 전달하지만 다음 viewcontroller로 푸시하지 않습니다.
이 문제를 해결하기 위해 didelectRowAtIndexPath 메서드를 사용하고 내 문자열을 설정했습니다.
아래는 제 전체 작동 코드입니다.
재정의 FUNC의있는 tableView (있는 tableView : jQuery과, didSelectRowAtIndexPath indexPath : NSIndexPath) {
contentTitle = "Some title" //contentTitle is a global variable
tableView.deselectRowAtIndexPath(indexPath, animated: true)
let row = indexPath.row
performSegueWithIdentifier("PassData", sender: row)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "PassData" {
let vc = segue.destinationViewController as! ToDoListDetailViewController
vc.titleString = contentTitle //setting the titleString created from my ToDoListDetailViewController and setting it to contentTitle
}
}
우선 여부입니다. vc 변수를 설정하고 무슨 일이 일어 났는지보고 난 후에 print 문을 써라. 또한 SEGUE 식별자가 나는 것을했고, 나는 다시 내 인쇄 문에서 듣지 않았다 올바른 –
@The_Curry_Man 있는지 확인합니다. 내 여기서 userList에 값이없는 경우에도, 적어도 충돌해야하지만 그렇지 않습니다. –