Задать вопрос
seriy81
@seriy81
начинающий IOS разработчик

Как вывести из списка т.е. 2 row только 1 row в tablecell swift?

Добрый день!Помоги разобраться с вопросом: после вычисления появился результат HARD и выведены 2 row :Expert Hard и Cartridge Hard, мне нужно чтобы по нажатию остальных segment индексов по выбору типа и уровня т.е product type и product level как показано стрелками вывести только 1 row?например я выбрал new filter и Easy fit UTS резульаьт был как на 2 м скриншоте то есть из 2 row должен быть 1 row - результат и осуществить переход на detailview?какую функцию надо использовать?
вот код ,правда так ли написал?
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")!
let producttype = ProductTypeControl.selectedSegmentIndex
let productlevel = ProductLevelControl.selectedSegmentIndex

if producttype ==0 && productlevel == 1 {
cell.imageProduct?.image = UIImage(named:ExpertHARD[indexPath.row])
cell.nameProduct?.text = ExpertHARD[indexPath.row]
}
else producttype == 1 && productlevel == 2 {
cell.imageProduct?.image = UIImage(named:CartridgeHARD[indexPath.row])
cell.nameProduct?.text = CartridgeHARD[indexPath.row]

return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
guard indexPath.row == 1 else { return }
let vc = UIViewController()
navigationController?.pushViewController(vc, animated: true)
}

вот код ,правда так ли написал?59e713ba0fcfc550842130.png59e713c3882e0681688620.png
  • Вопрос задан
  • 161 просмотр
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@freeg0r
.. some dude ..
присутствие логики в методах UI объектов не есть хорошо. У вас должен быть какой то массив с данными (продуктами), который и есть источник для заполнения таблицы. Переключения фильтров (сегмент контроллеры в вашем случае) должно менять объекты в этом массиве и перезагружать таблицу. А метод cellForRowAt indexPath будет только извлекать данные из массива и заполнять ячейки, как и количество ячеек должно исходить из количества объектов в массиве с данными (продуктами). Еще раз, фильтрация происходит вне методов таблицы, вы выбираете из списка всех товаров только товары соответствующие фильтрам, кладете из в массив из которого таблица берет данные по indexPath.row (индекс ячейки соответствующий индексу товара в массиве.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы