1
在我的应用程序中,我在UITableView上显示了物种的“组”。将行高设置为0,对于选定的行(swift)
有些群组是免费的,有些群组是在应用内购买的。
应用内购买的群组在cellForRowAtIndexPath
中设置的该行上具有挂锁的UIImage。
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
}
}
}
}
....
我有一个选项设置为“隐藏锁定的项目”基于一个UISwitch
当用户选择这个,我想隐藏锁定小组(或不购买的物品)。我想通过将行高设置为0可以隐藏特定的行。
我很努力地将行高设置为0,使用indexPath.row作为它的indexPath.row不接受CGFloat命令。
对此提出建议?编辑: 实现我需要使用heightForRowAt indexPath:IndexPath函数,但我有一个困难的时间分配给indexPath.row。
也许更好的问题是:我如何设置它,以便我知道哪个indexPath.row具有“padLock.isHidden == false”。
谢谢,我一直在尝试在heightForRow里面,但是你的想法比我一直在尝试的要多得多。上述唯一的问题是我无法弄清楚frc代表什么? –
那就是我所谓的fetchedResultsController:private var frc = NSFetchedResultsController() –