Я пытаюсь реализовать шаблон делегирования на Swift. Процесс состоит из popover, который отображается из UIMenuItem в текстовом выборе в textView. Этот popover - TableViewController, который содержит некоторые цвета. Когда ячейка (или цвет) используется, выбранный текст меняет цвет с черного на выбранный. У меня есть следующий протокол в передающем классе:Делегация не работает Swift
protocol SelectedColorDelegate {
func didSelectColorCell(color: UIColor)
}
Тогда в передающем классе я создал эту собственность:
var colorCellDelegate: SelectedColorDelegate?
В методе didSelectRowAtIndexPath в tableViewController (пирог), который является отправкой класса, Я назначил необходимый параметр:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let color = arrayOfColorValues[indexPath.row]
self.colorCellDelegate?.didSelectColorCell(color: color)
}
в моем приемном классе, который является ViewController я установить SelectedColorDelegate протокола, и соответствовал этим м еню, направленные на изменение TextColor:
func didSelectColorCell(color: UIColor) {
let textRange = noteTextView.selectedRange
let string = NSMutableAttributedString(attributedString: noteTextView.attributedText)
string.addAttribute(NSForegroundColorAttributeName, value: color, range: textRange)
noteTextView.attributedText = string
noteTextView.selectedRange = textRange
}
Но последний метод никогда не вызывается, нажав ячейки в пирог не делает ничего, что я отсутствует или делаю неправильно? Благодаря!! :)
вы можете поставить точку останова в функции с 'didSelectRowAt' и проверить, если он COLLED? –
Вы назначили ViewController для colorCellDelegate? –
popover? .Delegate = self; убедитесь, что вы назначили этих делегатов в Viewcontroller. – Himanshu