Текстовые представления внутри UIPage View Controller смешивают текст в первом запуске приложения - PullRequest
0 голосов
/ 08 октября 2019

Эта ошибка возникает только при новой установке приложения.

У меня есть контроллер 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 из раскадровки ??? Что вызывает эту проблему. Давно-долго-долго боролся с этой проблемой.

...