Я пытаюсь переписать и передать данные (от UITableView до UIViewController). Мой код:UITableView не использует ячейку в качестве отправителя
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "IndividualAchievementsSegue" {
let destination = segue.destinationViewController as? IndividualAchievementsViewController
let cell = sender as! UITableViewCell
let selectedRow = AchievementsTable.indexPathForCell(cell)!.row
destination!.viaSegue = achievements[selectedRow]
print(selectedRow)
}
}
но линия let cell = отправитель как! UITableViewCell бросает
Не удалось бросить значение типа «ProgramName.AchievementsViewController» к «UITableViewCell»
Я также попытался
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "IndividualAchievementsSegue" {
let destination = segue.destinationViewController as? IndividualAchievementsViewController
let selectedRow = AchievementsTable.indexPathForSelectedRow!.row
destination!.viaSegue = achievements[selectedRow]
print(selectedRow)
}
}
Это терпит неудачу, потому что он находит ноль разворачивать дополнительный во время achievements[selectedRow]
, так как это, очевидно, дает мне ноль от let selectedRow = AchievementsTable.indexPathForSelectedRow!.row
Я думаю, что вы правы, но странно то, я создал SEGUE, перетаскивая из прототипа ячейки в IndividualAchievementsViewController. Тем не менее, когда я его изучаю, при помощи мыши над точкой соединения сбоку, он выбирает весь контроллер представления. Есть ли какой-то трюк для подключения TableCell к IndividualAchievementsViewController? – Nick
Сначала удалите этот старый segue. После этого в иерархии представлений выберите свой 'TableCell' и нажмите' ctrl' вместе с этим и перетащите его в 'IndividualAchievementsViewController', надейтесь, что вы его поиграете. –
nope, те же ошибки – Nick