Во время рефакторинга приложения от Objective-C до Swift я столкнулся с проблемой, которую я не могу решить самостоятельно.Как использовать обработчик завершения в rejectViewControllerAnimated с помощью Swift?
ViewControllerOne
имеет способ
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
. В этом методе я устанавливаю destinationViewController
:
ViewControllerTwo *viewControllerTwo = [segue destinationViewController];
и некоторый блок обработчика, как это:
[viewControllerTwo setHandlerOne:^(id sender) {
[...]
}]
Затем, коснувшись кнопки я показываю модальное представление. В модальный контроллер представления ViewControllerTwo
Я закрываю этот вид модального:
- (IBAction)buttonPressed:(id)sender {
[self dismissViewControllerAnimated:YES completion:nil];
self.handlerOne(sender);
}
В Swift код, который я настроил же:
ViewControllerOne
методом:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
Установите переключатель destinationViewController
let vc = segue.destinationViewController as! ViewControllerTwo
И кодный код:
vc.setHandlerOne {() -> Void in
[...]
}
Таким образом, я получаю сообщение об ошибке Value of type 'ViewControllerTwo' has no member 'setHandlerOne'
. Что мне здесь не хватает? Должен ли я вручную установить его в viewControllerTwo
?
Вы уверены, что ваш destinationViewController является объектом ViewControllerTwo? –
Сообщите вашему быстрому, что дает вам ошибка – dan
Неверный код. Проблема заключается в вашем коде Swift. Покажите свой код Swift. Не ваш код Objective-C. Никто не заботится о коде Objective-C. Это не вызывает ошибки, не так ли? – matt