Эта ошибка возникает только при новой установке приложения.
У меня есть контроллер UIPageView с 3 различными контроллерами встроенного представления из моего основного раскадровки (все тот же VC в раскадровке). Контроллеры представления содержат текстовые представления, и когда я набираю текст в контроллере представления B и текст в контроллере представления C, затем возвращаюсь назад к основному экрану (используя кнопку «назад» на панели навигации) и затем обратно к контроллерам представления, я вижутекст из контроллера представления C на контроллере представления B.
Если я выхожу из приложения и возвращаюсь в приложение, такое поведение больше не происходит.
Nav Controller -> Главное меню -> PageVC -> VCA |ВКБ |VCC Введите текст в VCB и введите текст в VCC, затем вернитесь в главное меню, затем вернитесь, и текст из VCC будет в VCB. Эта проблема проявлялась и в прошлом и раньше. Текстовые представления становятся полностью запутанными через контроллеры представления.
Это код из моего контроллера представления:
'' '
func createAndInitializeView() {
// create and add subviews to stackView
if runOnce {
for object in dataSourcePlan.objectStack {
// create title labels
let title = UILabel()
title.backgroundColor = .clear
title.textColor = globalTPXNavTitleTextColor
title.font = .systemFont(ofSize: 16)
title.textAlignment = .left
title.text = object.title
titleLabelArray.append(title)
// create header view
let headerView = UIView()
headerView.translatesAutoresizingMaskIntoConstraints = false
headerView.heightAnchor.constraint(equalToConstant: 64).isActive = true
headerView.backgroundColor = globalTPXNavBackgroundColor
headerView.addSubview(title)
self.stackView.addArrangedSubview(headerView)
title.sizeToFit()
title.frame = CGRect(x: 20, y: 64 - title.frame.height - 8, width:
title.frame.width, height: title.frame.height)
// create text views
let newTextView = PaddedTextView()
newTextView.delegate = self
newTextView.isScrollEnabled = false
newTextView.backgroundColor = globalTPXTextViewBackgroundColor
newTextView.text = object.text
newTextView.textAlignment = .left
newTextView.font = globalUITextViewFont
newTextView.textColor = globalTPXTextViewTextColor
self.textViewArray.append(newTextView)
resize(textView: newTextView)
self.stackView.addArrangedSubview(newTextView)
}
// set contentInsets
self.scrollView.contentInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom:
keyboardHeight, right: 0.0)
//runOnce = false
}
}
func textViewDidChange(_ textView: UITextView) {
// update model data
for (index, textViewInArray) in textViewArray.enumerated() {
if textView == textViewInArray {
textViewInArray.text = textView.text
planDelegate?.textViewDidChange(text: textView.text, objectStackIndex: index)
}
}
}
' ''
Это код из представления страницыконтроллер:
'' '
// MARK: ---> createViewControllerArray
private func createViewControllerArray() -> [TPPlanVC] {
// creates an array of instantiated TPPlanVCs
print(":::: CREATING VC ARRAY ::::")
var newArray : [TPPlanVC] = []
for (index, plan) in localContainerModel.planArray.enumerated() {
let newVC = self.newVCFromStoryboard(storyboardID: StoryBoardKeys.stackerVC)
newVC.dataSourceType = self.dataSourceType
newVC.dataSourceIndex = index
newVC.dataSourcePlan = plan
newVC.pageDelegate = self
newVC.planDelegate = self
newArray.append(newVC)
}
return newArray
}
// MARK: --> newVCFromStoryboard()
private func newVCFromStoryboard(storyboardID: String) -> TPPlanVC {
return UIStoryboard(name: "Main", bundle: nil) .
instantiateViewController(withIdentifier: storyboardID) as! TPPlanVC
}
}
// MARK: - ObjectStackXDelegate
extension TPPageVC: PlanVCXDelegate {
func textViewDidEndEditing(modifiedPlan: TPPlanModelX, planIndex: Int) {
// replace plan and save data
print("BOOOM ENDINGGGGGG")
localContainerModel.planArray[planIndex] = modifiedPlan
modelDelegate?.updateLocalModel(model: localContainerModel, dataSourceType:
dataSourceType)
//saveData()
}
func textViewDidChange(text: String, objectStackIndex: Int) {
// update local model
print("TYPING")
localContainerModel.planArray[currentVCIndex].objectStack[objectStackIndex].text = text
modelDelegate?.updateLocalModel(model: localContainerModel, dataSourceType:
dataSourceType)
}
' ''
Я не верю, что это связано с моим кодом, так как эта проблема не возникает, когда приложениебыл ранее запущен (установите приложение, выйдите из приложения, затем повторно войдите в приложение). Я делаю что-то не так с созданием того же VC из раскадровки ??? Что вызывает эту проблему. Давно-долго-долго боролся с этой проблемой.