Я заранее извиняюсь за задание такого глупого вопроса, но я не совсем понял, что хотел узнать из других ответов. Вот пример кода протокола пользовательского делегата от курса Ray Wenderlich IOSНе совсем понял концепцию пользовательских протоколов, Swift 3
protocol AddItemViewControllerDelegate: class {
func addItemViewControllerDidCancel(_ controller: AddItemViewController)
func addItemViewController(_ controller: AddItemViewController,
didFinishAdding item: ChecklistItem) }
Хотя определение протокола вполне понятно, что это своего рода контракт, который должен сообразоваться с тем, чтобы использовать. Но вот реализация функции протокола в теле конформного класса
func addItemViewController(_ controller: AddItemViewController,
didFinishAdding item: ChecklistItem) {
let newRowIndex = items.count
items.append(item)
let indexPath = IndexPath(row: newRowIndex, section: 0)
let indexPaths = [indexPath]
tableView.insertRows(at: indexPaths, with: .automatic)
dismiss(animated: true, completion: nil)
}
И нет никакого фактического использования контроллера аргумента, и что didFinishAdding? Насколько я понимаю, didFinishAdding - это просто внешнее имя для внутреннего аргумента item. Но как это работает, как можно понять из тела протокола, что контроллер с именем AddItemViewController отправляет ChecklistItem соответствующему делегату, или это некоторый предопределенный тип функции?
С какого кода у вас этот код? Есть ли конкретный учебник от Ray, для которого вы можете предоставить URL-адрес? –