Я застреваю, пытаясь передать параметр между двумя UITableViews в XCode с Swift.Как передать данные между двумя UITableViewControllers в Swift?
Я видел несколько вопросов, заданных здесь, но, хотя я и следовал инструкциям, я все еще застрял.
Я установил свою раскадровку. У меня была проблема, потому что большая часть руководства, которое я нашел, использовал «Show» Segue, но по какой-то причине я могу использовать только «Push» Segue. Там нет никакого способа, я могу перетащить и создать «Показать» SEGUE (возможно потому, что я использую Mac с помощью удаленного рабочего стола на Windows, и Mac не понимая Ctrl/Command Key?)
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
selectedIndex = indexPath.row
}
override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!) {
if (segue.identifier == "secondSegue") {
let controller = segue.destinationViewController as! SecondViewController
controller.valuePassed = selectedIndex
}
}
Даже если это работает , по какой-то причине прошедший индекс никогда не является текущим. Вместо этого индекс, полученный на втором экране, является предыдущим выбранным.
Я также пробовал использовать «performSegueWithIdentifier», но при этом мой второй экран открывается дважды, когда я нажимаю элемент. Я предполагаю, что это связано с тем, что между ними существует ссылка «Push», а также «performSegueWithIdentifier».
Я не знаю, как создать идентификатор Segue, не связывая оба экрана на раскадровке.
Итак, я не уверен, что мой код неправильный, если мне нужно каким-то образом создать «Show» Segue (я действительно новичок в программировании на iOS, и я не знаю фактической разницы между Push и Show on контекст UITableView). Если мне нужно каким-то образом создать идентификатор Segue, не связывая экраны на раскадровке и т. д. ... Я действительно застрял и вышел из идей.
Цените любую помощь. Благодарю.
«Шоу» - это то, что они называют «Push» segues сейчас, насколько я знаю. Итак, ты хороший. –
'prepareForSegue' вызывается перед' didSelectRowAtIndexPath'. Если вы хотите получить выбранный индекс в 'prepareForSegue', то получите его через' tableView.indexPathForSelectedRow.row' – dan
Я думаю, что здесь происходит то, что, поскольку вы связали thg segue от ячейки к VC, когда вы выберете ячейку, она сначала вызовет the prepareforsegue, а затем selectedIndex = indexPath.row. Поэтому вместо того, чтобы связывать segue со ссылкой на ячейку с VC на VC и в didselect вызывать executeSegueWithIdentifier. –