Я создаю приложение с несколькими представлениями 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, но сейчас они оба возвращаются безтовар.