Извините, да, это еще один вопрос, требующий помощи по протоколам Swift.В прошлом они прекрасно использовались между двумя венчурными капиталистами с использованием стандарта prepare (ForSegue ...).НО, моя ситуация не включает 2 VC.
В моем приложении у меня есть контроллер представления (назовем его VC A), в котором есть меню настроек, в котором есть опция для изменения изображения группы.Функциональность меню настроек работает нормально, за исключением того, что imageView, отображаемое на VC A, не обновляется (если пользователь не покидает VC и не возвращается).Функция делегата на VC A не выполняется после завершения опции меню настроек.
Заранее спасибо за помощь.
У меня есть файл Protocols.swift для различных протоколов делегатов, которые я использую.Протокол для этой ситуации:
protocol UpdateGroupImageviewDelegate: class {
func updateGroupImageview()
}
Соответствующий код в меню выпадающих расчетов:
class GroupSettingsLauncher: NSObject, UICollectionViewDelegateFlowLayout, UICollectionViewDelegate, UICollectionViewDataSource, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
weak var delegate: UpdateGroupImageviewDelegate?
// rest of the settings menu code, including one that executes the imagePicker
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
// do the normal imagePicker stuff to get the selected image
// store the image, etc.
// call delegate method to update group image on chat screen
print("ABOUT TO CALL DELEGATE FOR UPATEGROUPIMAGEVIEW") // this prints correctly
self.delegate?.updateGroupImageview()
}
}
Код из viewController A:
class GroupChatViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextViewDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UpdateGroupImageviewDelegate {
// Delegate Variable
var updateGroupImageviewDelegate: GroupSettingsLauncher?
override func viewDidLoad() {
super.viewDidLoad()
// Set this VC as the delegate for updating the group Imageview
updateGroupImageviewDelegate?.delegate = self
// rest of code
}
func updateGroupImageview() {
print("*** updateGroupImageview has been called!") // This is not printing
}
}