1 Вопрос: проблема с .reloadData () при переходе между ВК

вопрос создан в Wed, May 8, 2019 12:00 AM

Я пытаюсь использовать пользовательскую анимацию перехода: https://github.com/AladinWay/TransitionButton р>

Он работает так, как предполагалось, но по какой-то причине после переключения на новое приложение VC он останавливается. и отображает ошибку "Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value"

Я успешно локализовал проблему в строке

DispatchQueue.main.async {
                     self.collectionView.reloadData ()
                 }

Без анимации при прямом переходе на ВК проблемы возникают. информация загружается и обновляется путем перезагрузки представления.

Возможно, проблема возникает во время прямого перехода к

 self.present (secondVC, animated: true, completion: nil)

Я попытался удалить строку self.collectionView.reloadData () тогда ошибка не возникает. Просто остается черный экран. Но это тоже проблема.

Сначала я подумал, что проблема была в модуле, но я думаю, что проблема в том, что существует прямой переход к VC, и CollectionView просто не загружается, и когда я пытаюсь выполнить обновление, я получаю ошибка

import TransitionButton
import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var searchTextField: UITextField!




    override func viewDidLoad() {
        super.viewDidLoad()


    }

    @IBAction func buttonAction(_ button: TransitionButton) {
        button.startAnimation() // 2: Then start the animation when the user tap the button
        let qualityOfServiceClass = DispatchQoS.QoSClass.background
        let backgroundQueue = DispatchQueue.global(qos: qualityOfServiceClass)
        backgroundQueue.async(execute: {

            sleep(3) // 3: Do your networking task or background work here.

            DispatchQueue.main.async(execute: { () -> Void in
                // 4: Stop the animation, here you have three options for the `animationStyle` property:
                // .expand: useful when the task has been compeletd successfully and you want to expand the button and transit to another view controller in the completion callback
                // .shake: when you want to reflect to the user that the task did not complete successfly
                // .normal
                button.stopAnimation(animationStyle: .expand, completion: {
                    let secondVC = CarInfo()
                    self.present(secondVC, animated: true, completion: nil)
                })
            })
        })
    }
}

import TransitionButton
import UIKit

class CarInfo: CustomTransitionViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {

    @IBOutlet weak var testSegue: UILabel!
    @IBOutlet weak var collectionView: UICollectionView!


    override func viewDidLoad() {
        super.viewDidLoad()




        // create post request


                DispatchQueue.main.async {
                    self.collectionView.reloadData()
                }
            } catch {
                print(error)
            }

        }
        task.resume()
}

Я планирую использовать эту анимацию и в фоновом режиме для загрузки данных из API после отображения готовой страницы. Но сейчас все просто ломается

    
1
  1. Возможный дубликат заголовка stackoverflow.com/questions/25474115/…
    2019-05-08 16: 48: 05Z
1 ответ                              1                         

Вы должны загрузить этот видеоматериал из раскадровки, поэтому замените и установите идентификатор раскадровки, например, CardID

let secondVC = CarInfo()

с р>

let secondVC  = self.storyboard!.instantiateViewController(withIdentifier: "CardID") as! CarInfo
    
1
2019-05-08 16: 37: 25Z
  1. Это сработало, но не совсем так, как я планировал. Как сохранить привязку к NavController, чтобы можно было вернуться назад?
    2019-05-08 21: 04: 39Z
  2. разрешить нужно заменить self.present(secondVC, animated: true, completion: nil) из self.performSegue(withIdentifier: "navSegue", sender: self) navSegue - это идентификатор для segue, к которому я подключил два нужных мне VC
    2019-05-08 21: 58: 44Z
  3. ваша главная проблема, которая заключается в том, чтобы загрузить виртуальный канал, используя segue /present - ваш выбор
    2019-05-08 22: 05: 48Z
источник размещен Вот