У меня есть приложение для iOS, которое имеет Контроллер A , в котором используется табличное представление, использующее протокол 3D Touch.Каждая ячейка фактически принимает это 3D-касание, поэтому при выборе ячейки будет отображаться модальный контроллер вида (Контроллер B).
Этот контроллер B в основном используется для заполнения информации, которая затем добавляетсяна просмотр таблицы на Контроллер A .
Итак, применяя принцип СУХОЙ, я повторно использую Контроллер B для добавления и редактирования данных.
Проблема:
Контроллер B имеет свойство
var didPresentVia3dTouch : Bool = false
и метод:
public func setPreference(editMode: Bool) {
self.didPresentVia3dTouch = editMode
}
Таким образом, предполагается, что этот метод устанавливает значение didPresentVia3dTouch в значение true из false, когда ячейка таблицы в Controller A принудительно касается, а не отображается через кнопку элемента навигации какобщий вызов «Добавить».
в Контроллер A , я сохранил ссылку на Контроллер B примерно так:
var controllerBref = AddEditViewController()
поэтому в методе
func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController)
я вызываю метод setPreference из Контроллер B примерно так:
controllerBRef.setPreference(true)
для вызова контроллера B , который будет действовать как представление редактирования для данных в этой ячейке.
Одна проблема, которую я заметил, заключается в том, что когда я печатаю значение метода Controller B setPreference (editMode: Bool), константа editMode, он печатает true, но в viewWillAppear, viewDidAppear, viewDidLoad и во всех других методах значение для didPresentVia3dTouch по-прежнему читается как false, поэтому поэтому я не могу изменить заголовок панели навигации независимо от того, находится ли он в режиме редактированияили Добавить новый режим.
Есть что-то, чего я пропускаю или не понимаю?Я попробовал делегирование, но не смог понять это.