Я пытаюсь отобразить два UICollectionViews на моем ViewController, однако ни одна из данных не загружается и UICollectionViews не пусты - PullRequest
0 голосов
/ 25 апреля 2019

Я создаю приложение с несколькими представлениями UICollection на первом ViewController;однако всякий раз, когда я запускаю свое приложение в симуляторе, оба CollectionViews представляются без элементов.Я хочу знать, как я могу заставить эти контроллеры представления предоставлять мне требуемые представления.

Я поместил операторы print, чтобы посмотреть, может быть, программа говорит им возвращать без значений, но операторы printвозвращаются с правильными значениями: 1 и 21.

Редактировать:

Я думаю, что проблема связана с ifStatement в функциях collectionViews после функции, потому что allDeals загружаеткогда я имитирую, но myFavotires по-прежнему отображается пустым.

class ViewController: UIViewController {

    let allDiscounts = discountBank()
    let dateClass = theDate()
    let defaults = UserDefaults.standard
    var my1 = 0
    var isBoolLiked = true
    var myKey = ""
    var myEmptyArray = [Int]()
    let dealLikeNames = ["Starbucks", "Qdoba", "Boston Market", "Ritas", "Cinnabon", "Arbys", "AMCTheatres", "PretzelMaker", "PhillyPF", "KrispyKreme1", "DunkinDonuts", "ChickFilA", "711", "KrispyKreme2", "LongJohnSilvers", "KrispyKreme3", "Dennys", "TGIF", "OliveGarden", "GoldenCorral", "Quiznos"]
    var todaysDate = 0
    var k=0
    var k2=1
    var myList = [Int]()
    var labelOne = ""
    var labelTwo = ""
    var labelThree = ""
    let day = Calendar.current.component(.day, from: Date())
    let month = Calendar.current.component(.month, from: Date())

    struct searchStruct {
        static var buttonTag=0
    }

    @IBOutlet var allDealsCollectionView: UICollectionView!
    @IBOutlet var nextupdiscountview: UIView!
    @IBOutlet var myfavoritesview: UIView!
    @IBOutlet var myFavoritesCollectionView: UICollectionView!
    @IBOutlet var nextUpLogo: UIImageView!
    @IBOutlet var nextUpDate: UILabel!

    @IBAction func nextUpDiscountButton(_ sender: UIButton) {
        searchStruct.buttonTag = myList[0]
        performSegue(withIdentifier: "gotocompany1", sender: self)
    }

    override func viewDidLoad() {
        AppUtility.lockOrientation(.portrait)
        homeImage()
        findNumberOfLikes()
        myfavoritesview.layer.cornerRadius = 10
        nextupdiscountview.layer.cornerRadius = 10
        nextUpLogo.layer.cornerRadius = 10
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    func findNumberOfLikes() {
        for i in 0...dealLikeNames.count-1 {
            myKey = dealLikeNames[i]
            isBoolLiked = UserDefaults.standard.bool(forKey: myKey)
            if isBoolLiked == true {
                myEmptyArray.append(i)
            }
        }
    }

    func homeImage() {
        for i in 0...allDiscounts.list.count-1 {
            if dateClass.todaysDate > allDiscounts.list[i].dateApplied {
                my1 = i+1
            }
        }
        myList.append(my1)

        for i in my1+1...allDiscounts.list.count-1{
            myList.append(i)
        }
        if my1>=1{
            for i in 0...my1-1{
                myList.append(i)
            }
        }
        print(myList)

        nextUpLogo.image = UIImage(named: allDiscounts.list[myList[0]].imageName)
        nextUpLogo.layer.cornerRadius = 10

        nextUpDate.text = allDiscounts.list[myList[0]].dateText
    }
}

extension ViewController: UICollectionViewDelegate, UICollectionViewDataSource {

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        if collectionView == self.myFavoritesCollectionView{
            print(myEmptyArray.count)
           return myEmptyArray.count
        }
        else {
            print(allDiscounts.list.count)
            return allDiscounts.list.count
        }
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        if collectionView == self.myFavoritesCollectionView {
            let cell = myFavoritesCollectionView.dequeueReusableCell(withReuseIdentifier: "theLikes", for: indexPath) as? myLikesCollectionViewCell
            cell?.companyLikedImage.image = UIImage(named: allDiscounts.list[myEmptyArray[indexPath.row]].imageName)
            cell?.companyLikedName.text = allDiscounts.list[myEmptyArray[indexPath.row]].businessName
            return cell!
        } else {
            let cell = allDealsCollectionView.dequeueReusableCell(withReuseIdentifier: "allDeals", for: indexPath) as? allDealsCollectionViewCell
            cell?.companyLikedImage1.image = UIImage(named: allDiscounts.list[indexPath.row].imageName)
            cell?.companyLikedName1.text = allDiscounts.list[indexPath.row].businessName
            return cell!
        }
    }

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        if collectionView == self.myFavoritesCollectionView {
            // handle tap events
            ViewController.searchStruct.buttonTag = myEmptyArray[indexPath.row]
            performSegue(withIdentifier: "gotocompany1", sender: self)
        } else {
            ViewController.searchStruct.buttonTag = indexPath.row
            performSegue(withIdentifier: "gotocompany1", sender: self)
        }
    }
}

Я хочу, чтобы в allDealsCollectionView был 21 элемент и 1 элемент в myFavorCollectionView, но сейчас они оба возвращаются безтовар.

...