приложение обновляется только когда я закрываю и снова открываю его - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь создать приложение IOS, в котором пользователь помещает параметры в представление таблицы, затем появляются параметры, а вращающийся фрейм вращается и останавливается в случайной точке. Я поместил весь необходимый код в ViewWillAppear, но по какой-то причине приложение не обновляется с пользовательскими настройками по умолчанию, только когда я закрываю приложение и снова открываю его. В какой-то момент это действительно сработало, но затем остановилось, и я не знаю, как это исправить. Я использую TTFortuneWheel Pod.

ImageOne ImageTwo

Я свяжу свой GitHub на случай, если кто-то захочет взглянуть на полный код. https://github.com/jamesnjones/Just.Decide

ниже код для главного экрана

    import UIKit
import TTFortuneWheel
import AVFoundation


class ViewController: UIViewController, UINavigationControllerDelegate {
 
    @IBOutlet weak var spinningWheel: TTFortuneWheel!
    @IBOutlet weak var ResultsLabel: UILabel!
    
    let transition = SlideInTransition()
    
    var slices : [CarnivalWheel] = []
    var result: String?
    
    var player: AVAudioPlayer!
    var soundIsOn = true
    
    override func viewDidLoad() {
        super.viewDidLoad()
       
        
        self.navigationController?.delegate = self
        
        
        spinningWheel.initialDrawingOffset = 270.0
        }
    
    override func viewWillAppear(_ animated: Bool) {
          super.viewWillAppear(animated)
        
        print("check")
        
        slices = getSlices()
          spinningWheel.slices = slices
                   spinningWheel.equalSlices = true
                   spinningWheel.frameStroke.width = 0
                   spinningWheel.titleRotation = CGFloat.pi
                   spinningWheel.slices.enumerated().forEach { (pair) in
                       let slice = pair.element as! CarnivalWheel
                       let offset = pair.offset
                       switch offset % 6 {
                       case 0: slice.style = .blue
                       case 1: slice.style = .green
                       case 2: slice.style = .grey
                       case 3: slice.style = .orange
                       case 4: slice.style = .purple
                       default: slice.style = .yellow
                       }
                  
                   }
        
      }
    
    
    
   private func getSlices() -> [CarnivalWheel] {
        PersistenceManager.retrieveSlices { [weak self] result in
            guard let self = self else {return}
            
            switch result {
            case .success(let slices):
                if slices.isEmpty {
                    print("this is where i will add an alert or sumin")
                }else {
                    self.slices = slices
                    DispatchQueue.main.async {
                        self.reloadInputViews()
                    }
                }
                
            case .failure(let error):
                print("Edit VC Errror ")
            }
        }
        return slices
       
    }
    

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    
    func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
          true
      }
      
      func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
          true
      }
    
    
    @IBAction func rotateButton(_ sender: UIButton) {
        if soundIsOn {
        playSound(soundName: "spinning")
            ResultsLabel.text = ""
            let randomNumber = Int.random(in: 0...slices.count - 1)
            spinningWheel.startAnimating()
            
            DispatchQueue.main.asyncAfter(deadline: .now() + 0) {
                self.spinningWheel.startAnimating(fininshIndex: randomNumber) { (finished) in
                    self.ResultsLabel.text = self.spinningWheel.slices[randomNumber].title
                    
                    }
                }
        } else {
            
        ResultsLabel.text = ""
        let randomNumber = Int.random(in: 0...slices.count - 1)
        spinningWheel.startAnimating()
        
        DispatchQueue.main.asyncAfter(deadline: .now() + 0) {
            self.spinningWheel.startAnimating(fininshIndex: randomNumber) { (finished) in
                self.ResultsLabel.text = self.spinningWheel.slices[randomNumber].title
                
                }
            }
        
        }
    }

1 Ответ

0 голосов
/ 05 августа 2020

Вместо того, чтобы помещать его в свой viewWillAppear, помещает его внутри viewDidAppear:

override func viewDidAppear(_ animated: Bool) {
        <#code#>
    }
...