I altered some things in your example ViewController.swift to give you the perspective I'm facing, those were the changes:
var titleArray = ["GIOVANNIJ","MARCO","IBITCI","GOD","DID","RUAN","APPEND","BIAJ","LELE","TETE"]
func generateCardInfo (cardCount:Int) -> [AnyObject] {
var arr = [AnyObject]()
let xibName = ["CardA"]//,"CardB","CardC"]
for _ in 1...cardCount {
let value = Int(arc4random_uniform(UInt32(xibName.count)))
arr.append(xibName[value] as AnyObject)
}
return arr
}
func cardView(collectionView:UICollectionView,item:AnyObject,indexPath:IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: item as! String, for: indexPath )
switch cell {
case let c as CardACell:
c.txtView.text = "Hello This is MMCardView ,Its a demo with different Card Type,This is a text type"
c.labTitle.text = titleArray[indexPath.row]
case let c as CardBCell:
let v = Int(arc4random_uniform(5))+1
c.imgV.image = UIImage.init(named: "image\(v)")
case let c as CardCCell:
c.clickCallBack {
if let vc = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Second") as? SecondViewController {
vc.delegate = self
self.card.presentViewController(to: vc)
}
}
default:
return UICollectionViewCell()
}
return cell
}
@IBAction func filterAction () {
let sheet = UIAlertController.init(title: "Filter", message: "Select you want to show in View", preferredStyle: .alert)
sheet.addTextField(configurationHandler: nil)
let byText = UIAlertAction(title: "Filter by text", style: .default, handler: {
(alert: UIAlertAction!) -> Void in
self.card.filterAllDataWith(isInclued: { (idex, obj) -> Bool in
let titleTxt = self.titleArray[idex]
return titleTxt.lowercased().contains(sheet.textFields![0].text!)
})
})
/*let cellA = UIAlertAction(title: "CellA", style: .default, handler: {
(alert: UIAlertAction!) -> Void in
self.card.filterAllDataWith(isInclued: { (idex, obj) -> Bool in
return (obj as! String) == "CardA"
})
})
let cellB = UIAlertAction(title: "CellB", style: .default, handler: {
(alert: UIAlertAction!) -> Void in
self.card.filterAllDataWith(isInclued: { (idex, obj) -> Bool in
return (obj as! String) == "CardB"
})
})
let cellC = UIAlertAction(title: "CellC", style: .default, handler: {
(alert: UIAlertAction!) -> Void in
self.card.filterAllDataWith(isInclued: { (idex, obj) -> Bool in
return (obj as! String) == "CardC"
})
})
let ac = ["CardA","CardC"]
let cellAC = UIAlertAction(title: "CellA,CellC", style: .default, handler: {
(alert: UIAlertAction!) -> Void in
self.card.filterAllDataWith(isInclued: { (idex, obj) -> Bool in
return ac.contains(obj as! String)
})
})*/
let allCell = UIAlertAction(title: "Show all cells", style: .default, handler: {
(alert: UIAlertAction!) -> Void in
self.card.showAllData()
})
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: {
(alert: UIAlertAction!) -> Void in
})
//sheet.addAction(cellA)
sheet.addAction(byText)
/*sheet.addAction(cellB)
sheet.addAction(cellC)
sheet.addAction(cellAC)*/
sheet.addAction(allCell)
sheet.addAction(cancelAction)
self.present(sheet, animated: true, completion: nil)
}
Now this is what I'm facing:
1) You have a pile of the same type cards differentiating them only by some sort of text (all of these are stored in an array).
2) You choose to filter those cards by some text, looking for the cards that contains that text you typed.
3) The filtering is done properly.
4) You choose to show all your cards, to go back to the original state.
5) Apparently everything is okay, but some cards are duplicated and some are missing.
I altered some things in your example ViewController.swift to give you the perspective I'm facing, those were the changes:
Now this is what I'm facing:
1) You have a pile of the same type cards differentiating them only by some sort of text (all of these are stored in an array). 2) You choose to filter those cards by some text, looking for the cards that contains that text you typed. 3) The filtering is done properly. 4) You choose to show all your cards, to go back to the original state. 5) Apparently everything is okay, but some cards are duplicated and some are missing.
Can you help me with this?