У меня есть табличное представление с кнопками, каждая из которых содержит тег (в соответствии с indexPath.row), и когда я нажимаю определенную кнопку, сведения о содержимом этой ячейки (которая относится к классу с именем EventEntity) должны быть переданы через ' prepareForSegue' на другой экран.
Значение присваивается в методе 'infoButtonDidPress', как показано ниже:
func infoButtonDidPress(sender: UIButton){
eventPressed = eventEntities[sender.tag]
println (eventPressed.name) // prints the name, all good here.
}
Проблема в том, что когда я присваиваю содержимое eventPressed VC назначения в 'prepareForSegue', оно равно нулю. Код ниже:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "infoButtonSegue"){
var svc = segue.destinationViewController as! EventDetailsViewController;
println (eventPressed.name) // NOPE.
svc.name = eventPressed.name //also NOPE!
}
eventPressed объявлен выше viewDidLoad:
var eventPressed: EventEntity! = EventEntity()
Ошибка, которую я получаю, когда пытаюсь использовать любую из этих строк с комментарием «NOPE», — 'Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Appname.EventEntity name]: unrecognized selector sent to instance 0x7fa280e16a50' error
Что тут происходит?
Заранее спасибо!
ОБНОВЛЕНИЕ
Я переместил PerformWithSegue в метод infoButtonDidPress, но теперь не могу сослаться на targetViewController.
Мой infoButtonDidPress теперь выглядит так:
func infoButtonDidPress(sender: UIButton){
let eventPressed = eventEntities[sender.tag]
var destinationViewController: UIViewController = self.destinationViewController as EventDetailsViewController
// error: the current VC does not have a member named destinationViewController
self.performSegueWithIdentifier("infoButtonSegue", sender: self)
}
dvc
для целевого контроллера представления вместоsvc
для исходного контроллера представления. Но да, вы настраиваете его так же, даже если вы вызываете переход программно. 20.07.2015prepareForSegue
. Что значит не работает? Вы получаете ошибку компиляции или ошибку времени выполнения? 20.07.2015infoButtonDidPress
должен выглядеть именно так, как я указал в своем ответе. Вам по-прежнему нужна отдельная функцияprepareForSegue
для фактической настройки. 20.07.2015