Функция делегата Swift не вызывается из класса NSObject (не сценарий 2 ViewController) - PullRequest
0 голосов
/ 05 октября 2018

Извините, да, это еще один вопрос, требующий помощи по протоколам 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

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...