/ / iOS 7: Избирането на UICollectionViewCell ще избере клетки в UITableView в него - ios, uitableview, ios7, uicollectionview

iOS 7: Изборът на UICollectionViewCell ще избере клетки в UITableView в него - ios, uitableview, ios7, uicollectionview

Накратко: как мога да попреча на избора на клетка с изглед на колекция да повлияе на състоянието на избор на клетките с изглед на таблица, които са вътре в тази клетка с изглед на колекция?

Имам UICollectionView, където клетките се показват на цял екран, когато са избрани. Клетките съдържат UITableView, който ще показва информация за използване.

Проблемът, който имам е, че клетките визгледът на таблицата се показва така, сякаш са избрани. Премествах някои неща наоколо, за да покажа клетка на цял екран през цялото време, което ми позволи да потвърдя: когато е избрана клетката за изглед на колекция, клетките от изгледа на таблицата вътре в нея също се показват с избрания стил.

Обърнете внимание, че казвам, че са показва се с избрания стил, и не те са избрани. Що се отнася до изгледа на таблицата, те са не избрали.

[tableView indexPathsForSelectedRows]; не връща индекси. tableView:willSelectRowAtIndexPath:- от което бих могъл да върна нула - никога не се призовава. Така че е безопасно да се каже, че изгледът на таблицата не възприема собствените си клетки като избрани.

Но мога да потвърдя в Разкрий, че изгледа на таблицатаклетките съдържат избрания изглед на фон (виж последната екранна снимка по-долу). Това е така само за клетките с изглед на таблица, които са видими, когато е избрана клетката за изглед на колекция: това не се случва с клетки, които са достатъчно далеч в списъка, за да бъдат първоначално извън екрана.

Мога да скрия проблема с помощта cell.selectionStyle = UITableViewCellSelectionStyleNone; и в крайна сметка това може да е моето решение: клетките за изглед на таблица така или иначе няма да бъдат избираеми, така че рисуването върху проблема като този трябва да работи в моята ситуация.

Но това не отговаря на по-големия въпрос: какво по дяволите става тук?

Снимки от играта

Нормална клетка за изглед на колекция (цялото това нещо е една клетка):

Нормален изглед на клетката

Избрана клетка за изглед на колекция със сив избран стил на изгледа на масата в рамките на:

Избрана клетка

Разкриване, показващо избрания изглед на фон. В този случай клетката на таблицата, съдържаща бутона Изтриване, не се виждаше, когато беше избрана клетката за изглед на колекция, така че не получи стила за подбор като клетките над нея:

Избран изглед на фона

Отговори:

1 за отговор № 1

Очевидно това е очакваното поведение в iOS 7. setHighlighted: се извиква на всички подвидове, които го поддържат.


1 за отговор № 2

Преодолях се UITableViewCellпо този начин

func setHighlighted(_ highlighted: Bool, animated: Bool)
{
//Leave Empty
}

Поведението на Apple може да е правилно, защото по този начин бихте могли да пропуснете итерация на цялото дете и да зададете ръчно свойството, но защо не мога да избера, ако искам да го използвам UICollectionViewDelegate метод?

func collectionView(_ collectionView: UICollectionView, shouldHighlightItemAt indexPath: IndexPath) -> Bool