Dans mon application, j'ai "groupes" d'espèces affichées sur un UITableView.définition d'une hauteur de ligne à 0, pour les lignes sélectionnées (swift)
Certains groupes sont gratuits et certains sont achetés dans l'application.
Les groupes qui sont un achat in-app ont un UIImage d'un cadenas sur cette ligne configurée dans le cellForRowAtIndexPath
.
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: Resource.SpeciesCell)!
let specieImage: UIImageView = cell.viewWithTag(Resource.SpeciesImageTag) as! UIImageView
let specieName: UILabel = cell.viewWithTag(Resource.SpeciesNameTag) as! UILabel
let specieGenus: UILabel = cell.viewWithTag(Resource.SpeciesGenusTag) as! UILabel
let specieFamily: UILabel = cell.viewWithTag(Resource.SpeciesFamilyTag) as! UILabel
specieName.text = self.species[(indexPath as NSIndexPath).row].specie
specieFamily.text = ""
specieGenus.text = AppDelegate.getRLDatabase().getSubGroupName_BySpecieName(specieName.text!)
let padLock: UIImageView = cell.viewWithTag(Resource.SpeciesCategoryLabelTag) as! UIImageView
padLock.image = UIImage(named: "PadlockIcon")
padLock.alpha = 0.7
let fishesPurchased = UserDefaults.standard.bool (forKey: "ReefLife5Fishes")
let sharksPurchased = UserDefaults.standard.bool (forKey: "ReefLife6Sharks")
let turtlesPurchased = UserDefaults.standard.bool (forKey: "ReefLife8Turtles")
let seahorsesPurchased = UserDefaults.standard.bool (forKey: "ReefLife9Seahorses")
let vertebratesPurchased = UserDefaults.standard.bool (forKey: "ReefLife3Vertebrates")
let fullPurchased = UserDefaults.standard.bool (forKey: "ReefLife1Full")
padLock.isHidden = false
specieImage.alpha = 1.0
let speciesGroup = self.species[(indexPath as NSIndexPath).row].group
if fullPurchased == true {
padLock.isHidden = true
specieImage.alpha = 1.0
} else if speciesGroupVertebratesArray.contains(speciesGroup) {
if vertebratesPurchased == true {
padLock.isHidden = true
specieImage.alpha = 1.0
} else {
if speciesGroup == "Fish" {
if fishesPurchased == true{
padLock.isHidden = true
specieImage.alpha = 1.0
} else{
specieImage.alpha = 0.5
}
} else if (speciesGroup == "Sharks" || speciesGroup == "Rays") {
if sharksPurchased == true{
padLock.isHidden = true
specieImage.alpha = 1.0
} else{
specieImage.alpha = 0.5
}
} else if speciesGroup == "Syngnathiformes" {
if seahorsesPurchased == true{
padLock.isHidden = true
specieImage.alpha = 1.0
} else{
specieImage.alpha = 0.5
}
} else if speciesGroup == "Reptilia" {
if turtlesPurchased == true{
padLock.isHidden = true
specieImage.alpha = 1.0
} else{
specieImage.alpha = 0.5
}
}
}
}
....
Je dispose d'un réglage d'option pour « masquer les éléments verrouillés » sur la base d'une UISwitch
Lorsque l'utilisateur sélectionne, je veux masquer les groupes verrouillés (ou des éléments non achetés). Je pensais que la meilleure façon d'y parvenir serait de masquer les lignes spécifiques, en définissant la hauteur de ligne à 0.
J'ai du mal à définir la hauteur de ligne à 0 en utilisant le indexPath.row comme le fait l'indexPath.row n'accepte pas une commande CGFloat.
Suggestions?
EDIT: Réaliser J'ai besoin d'utiliser la fonction indexPath: IndexPath de heightForRowAt, mais j'ai du mal à l'assigner à un indexPath.row. Peut-être une meilleure question serait: Comment puis-je le configurer afin que je sache quel indexPath.row a "padLock.isHidden == false".
Merci, j'ai essayé dans le heightForRow, mais votre idée est beaucoup plus proche que ce que j'avais essayé. Le seul problème avec ce qui précède est que je ne peux pas comprendre ce que frc représente? –
C'est exactement ce que j'ai appelé mon fetchedResultsController: private var frc = NSFetchedResultsController() –