В моем приложении у меня есть «группы» видов, отображаемых в UITableView.установка высоты строки до 0, для выбранных строк (быстрый)
Некоторые группы бесплатны, а некоторые - в приложении.
Группы, которые являются покупкой в приложении, имеют UIImage висячего замка в этой строке, настроенной в 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
}
}
}
}
....
У меня есть настройки опций, чтобы «скрыть заблокированные элементы» на основе UISwitch
Когда пользователь выбирает это, я хочу, чтобы скрыть заблокированные группы (или не купленные предметы). Я решил, что лучший способ добиться этого - скрыть конкретные строки, установив высоту строки на 0.
Я изо всех сил пытаюсь установить высоту строки 0 с помощью indexPath.row, поскольку это indexPath.row делает не принимать команду CGFloat.
Предложения?
EDIT: Поймите, мне нужно использовать функцию heightForRowAt indexPath: IndexPath, но мне сложно назначить ее indexPath.row.
Возможно, лучший вопрос: как я могу настроить его, чтобы я знал, у какого indexPath.row есть «padLock.isHidden == false».
Спасибо, я пытался внутри heightForRow, но ваша идея намного ближе, чем то, что я пытался. Единственная проблема с вышеизложенным - я не могу понять, что представляет собой frc? –
То, что я назвал своим fetchedResultsController: private var frc = NSFetchedResultsController() –