Как скрыть определенные кнопки UIB на основе строки, содержащейся в массиве - PullRequest
0 голосов
/ 12 октября 2018

У меня есть несколько UIB-кнопок, которые представляют различные рестораны, содержимое которых происходит из структуры.В этой структуре есть массив с тегами для каждого ресторана.Как я могу скрыть UIButton на основе тегов?На данный момент у меня это условно:

func filterFavorites() {
    if importedDataA.filterTags.contains(filterPresetRestaurantTypeService) {
        isVisibleA = true
    } else {
        isVisibleA = false
    }
    if importedDataB.filterTags.contains(filterPresetRestaurantTypeService) {
        isVisibleB = true
    } else {
        isVisibleB = false
    }
    if importedDataC.filterTags.contains(filterPresetRestaurantTypeService) {
        isVisibleC = true
    } else {
        isVisibleC = false
    }
    if importedDataD.filterTags.contains(filterPresetRestaurantTypeService) {
        isVisibleD = true
    } else {
        isVisibleD = false
    }
    if importedDataE.filterTags.contains(filterPresetRestaurantTypeService) {
        isVisibleE = true
    } else {
        isVisibleE = false
    }
    if importedDataF.filterTags.contains(filterPresetRestaurantTypeService) {
        isVisibleF = true
    } else {
        isVisibleF = false
    }
    if importedDataG.filterTags.contains(filterPresetRestaurantTypeService) {
        isVisibleG = true
    } else {
        isVisibleG = false
    } 

и т.д ...

И ...

func filterApply() {
    if isVisibleA == true {
        if UserDefaults.standard.bool(forKey: "hideFilteredObjects") == true {
            cellA.isHidden = false
        } else {
            //cellA.popIn()
        }
    } else {
        if UserDefaults.standard.bool(forKey: "hideFilteredObjects") == true {
            cellA.isHidden = true
        } else {
            //cellA.popOut()
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Вместо создания нескольких экземпляров вашей структуры importDataA, ImportDataB, ImportDataC и т. Д., Вы можете просто создать массив экземпляров что-то вроде:

var importedData: [your-structure] = []

Затем вместо того, чтобы пройти через все эти элементы одиниспользуя оператор if, вы можете использовать цикл for для прохождения следующих случаев:

for data in importedData{
  if data.filterTags.contains(filterPresetRestaurantTypeService){
    isVisibleG = true
  } else {
    isVisibleG = false
  } 
}

Надеюсь, это поможет.

0 голосов
/ 12 октября 2018

Предположим, у вас есть структура:

struct ImportedData{
    var filterTags: [Int]
}

 let buttons = [UIButton]() // add your buttons

 let importedData = [ImportedData]() // add your importedData

 (0..<(buttons.count)).map{buttons[$0].isHidden =     UserDefaults.standard.bool(forKey: "hideFilteredObjects") && (!importedData[$0].filterTags.contains(filterPresetRestaurantTypeService))}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...