认为没有表现得很快

时间:2016-12-15 18:37:13

标签: ios swift uiviewcontroller segue

View controllers 这是' Opgeslagen Rooster'的代码形式。的viewController

class vcSavedTimetable: UIViewController {
    @IBOutlet weak var noTimetableSavedLabel: UILabel!

    var timetable: Timetable!

    override func viewWillAppear(_ animated: Bool) {
        prepareView()

    }

    override func viewWillDisappear(_ animated: Bool) {
        noTimetableSavedLabel.isHidden = true

    }


    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "showSavedTimetable"{
            let viewController = segue.destination as! vcTimetableShow
            viewController.timetable = self.timetable
            viewController.willSave = false
        }
    }


    func prepareView(){
        let savedTimetable = getTimetableFromUserDefaults()
        guard (savedTimetable != nil) else {
            noTimetableSavedLabel.isHidden = false
            return
        }

        self.timetable = savedTimetable!
        performSegue(withIdentifier: "showSavedTimetable", sender: nil)
    }

    func getTimetableFromUserDefaults()->Timetable?{
        let timetableID = UserDefaults.standard.string(forKey: "savedTimetableID")

        if isConnectedToNetwork(){
            if let id = timetableID{
                let table = Timetable(timetableID: id)

                return table
            }
        }

        let val = UserDefaults.standard.data(forKey: "savedTimetable")
        if let data = val{
            let table = NSKeyedUnarchiver.unarchiveObject(with: data) as! Timetable

            return table
        }

        return nil
    }
}

这是目标viewcontroller' Rooster Bekijken'的代码。应该执行viewdidload()函数,但这并不会发生。我使用断点测试了它

//
//  vcTimetableShowCollectionViewController.swift
//  Ostrea Rooster App
//
//  Created by Giel-Jan Looij on 14-12-16.
//  Copyright © 2016 GJ-Computers. All rights reserved.
//

import UIKit

private let reuseIdentifier = "Cell"

class vcTimetableShow: UICollectionViewController, UICollectionViewDelegateFlowLayout {
    weak var timetable: Timetable?
    var willSave = false

    //UIVIEWCONTROLLER
    override func viewDidLoad() {
        super.viewDidLoad()
        collectionView?.delegate = self
        collectionView?.register( UINib(nibName: "timetableViewCell", bundle: nil), forCellWithReuseIdentifier: "lessonEntry")

        NotificationCenter.default.addObserver(self, selector: #selector(self.dataDidArrive(_:)), name: .didFetchTimetable, object: nil)
    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    deinit {
        NotificationCenter.default.removeObserver(self)

    }


    //METHODES
    func dataDidArrive(_ notification: NSNotification){
        collectionView?.reloadData()

        if let cv = self.collectionView {
            cv.layoutIfNeeded()
            let indexPath = IndexPath(item: 0, section: getDayOfWeek()-1)
            if let attributes =  cv.layoutAttributesForSupplementaryElement(ofKind: UICollectionElementKindSectionHeader, at: indexPath) {

                let topOfHeader = CGPoint(x: 0, y: attributes.frame.origin.y - cv.contentInset.top)
                cv.setContentOffset(topOfHeader, animated:true)
            }
        }

        if willSave {
            UserDefaults.standard.set(timetable!.timetableID, forKey: "savedTimetableID")
            let encodedTimetable = NSKeyedArchiver.archivedData(withRootObject: self.timetable!)
            UserDefaults.standard.set(encodedTimetable, forKey: "savedTimetable")

            UserDefaults.standard.synchronize()
        }
    }


    func getDayOfWeek()->Int {
        let myCalendar = Calendar(identifier: .gregorian)
        let weekDay = myCalendar.component(.weekday, from: Date())

        if weekDay > 6 || weekDay < 2{
            return 5
        }

        return weekDay-1
    }


    //UICOLLECTIONVIEW DATASOURCE
    override func numberOfSections(in collectionView: UICollectionView) -> Int {
        return timetable!.days.count

    }


    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return timetable!.days[section+1]!.hour.count * 2

    }


    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        if indexPath.item % 2 == 0{
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "hourIndicator", for: indexPath)
            let dayLabel = cell.viewWithTag(1) as! UILabel
            let dayIndex = indexPath.section + 1
            let hourIndex = indexPath.item/2 + 1
            let cellHour = timetable!.days[dayIndex]!.hour[hourIndex]!

            dayLabel.text = String(cellHour.hourID)
            cell.layer.borderColor = UIColor.black.cgColor
            cell.layer.borderWidth = 2


            return cell

        }else{
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "lessonEntry", for: indexPath) as! timetableViewCell
            let dayIndex = indexPath.section + 1
            let hourIndex = indexPath.item/2 + 1
            let cellHour = timetable!.days[dayIndex]!.hour[hourIndex]!

            cell.cellHour = cellHour
            cell.prepareCell()

            return cell
        }
    }


    override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
        let cell = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "dayHeaderCell", for: indexPath as IndexPath)

        let dayIndex = indexPath.section + 1
        let dayName = timetable!.days[dayIndex]!.dayName
        let day = cell.viewWithTag(1) as! UILabel
        day.text = dayName

        if timetable!.days[dayIndex]!.dayID == getDayOfWeek(){
            cell.backgroundColor = UIColor.lightGray

        }

        return cell
    }


    //UICOLLECTIONVIEW DELEGATE
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

        if indexPath.item % 2 == 0{
            let dayIndex = indexPath.section + 1
            let hourIndex = indexPath.item/2 + 1
            let cellHour = timetable!.days[dayIndex]!.hour[hourIndex]!

            var cellHeight: CGFloat = 0

            for _ in cellHour.lessons{
                cellHeight += 23
            }

            if cellHour.notice != ""{
                cellHeight += 23
            }

            return CGSize(width: 50, height: cellHeight)

        }else{
            let dayIndex = indexPath.section + 1
            let hourIndex = indexPath.item/2 + 1
            let cellHour = timetable!.days[dayIndex]!.hour[hourIndex]!

            var cellHeight: CGFloat = 0

            for _ in cellHour.lessons{
                cellHeight += 23
            }

            if cellHour.notice != ""{
                cellHeight += 23
            }

            return CGSize(width: 226.0, height: cellHeight)

        }
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {

        return 0
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {

        return 1
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
        let edgeInset: CGFloat = (collectionView.frame.width - (226.0 + 50.0))/2

        return UIEdgeInsets.init(top: 0, left: edgeInset, bottom: 30, right: edgeInset)
    }

}

我试图从Opgeslagen Rooster&#39;到了'Beoster Bekijken',但它并没有奏效。它在主线程(线程1)中运行,因此不是问题所在。它准备(为segue ...),做一切。之后,观点应该改变吗?但这并没有发生。 &#39; Rooster Bekijken&#39;的viewdidload方法。 ViewController没有被调用。它挂在pepare(for segue ....)函数的最后一行之后。

为什么它没有改变到另一个viewcontroller?当我访问The Rooster Bekijken&#39; viewcontroller构成了另一个视图控制器,它对它有所了解。

0 个答案:

没有答案