/ / iOS 7: wybranie UICollectionViewCell spowoduje wybranie komórek w UITableView w nim - ios, uitableview, ios7, uicollectionview

iOS 7: Wybór UICollectionViewCell wybierze komórki w UITableView w nim - ios, uitableview, ios7, uicollectionview

W skrócie: w jaki sposób mogę zapobiec wpływaniu zaznaczenia komórki widoku kolekcji na stan zaznaczenia komórek widoku tabeli znajdujących się w tej komórce widoku kolekcji?

Mam UICollectionView, w którym komórki są wyświetlane na pełnym ekranie po wybraniu. Komórki zawierają UITableView, który wyświetli informacje o użyciu.

Problemem jest to, że komórki wwidok tabeli jest wyświetlany tak, jakby był wybrany. Poruszyłem kilka rzeczy, aby wyświetlać komórkę na pełnym ekranie przez cały czas, co pozwoliło mi potwierdzić: kiedy komórka widoku kolekcji jest zaznaczona, komórki widoku tabeli wewnątrz niej są również wyświetlane z wybranym stylem.

Zauważ, że mówię, że są wyświetlane z wybranym stylem, i nie są wybrane. Jeśli chodzi o widok tabeli, to są nie wybrany.

[tableView indexPathsForSelectedRows]; nie zwraca ścieżek indeksu. tableView:willSelectRowAtIndexPath:- z którego mógłbym zwrócić zero - nigdy nie jest nazywany. Można śmiało powiedzieć, że widok tabeli nie postrzega własnych komórek jako wybranych.

Ale mogę potwierdzić w Reveal, że widok tabelikomórki zawierają wybrany widok tła (patrz ostatni zrzut ekranu poniżej). Dotyczy to tylko komórek widoku tabeli, które są widoczne po wybraniu komórki widoku kolekcji: nie dzieje się tak w przypadku komórek, które znajdują się wystarczająco daleko na liście, aby początkowo być poza ekranem.

Mogę ukryć problem za pomocą cell.selectionStyle = UITableViewCellSelectionStyleNone; i ostatecznie może to być moje rozwiązanie: komórki widoku tabeli i tak nie będą wybierane, więc pomalowanie takiego problemu powinno działać w mojej sytuacji.

Ale to nie odpowiada na większe pytanie: co do cholery tu się dzieje?

Zrzuty ekranu

Normalna komórka widoku kolekcji (cała ta sprawa to jedna komórka):

Normalny widok komórki

Komórka wybranego widoku kolekcji, z szarym stylem zaznaczonym w widoku tabeli w obrębie:

Wybrana komórka

Ujawnij, pokazując wybrany widok tła. W tym przypadku komórka tabeli zawierająca przycisk Usuń nie była widoczna po wybraniu komórki widoku kolekcji, więc nie uzyskała stylu selekcji, tak jak komórki powyżej:

Wybrany widok tła

Odpowiedzi:

1 dla odpowiedzi № 1

Najwyraźniej jest to oczekiwane zachowanie w iOS 7. setHighlighted: jest wywoływany we wszystkich podviewach, które go obsługują.


1 dla odpowiedzi nr 2

Przesłoniłem UITableViewCellw ten sposób

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

Zachowanie Apple może być prawidłowe, ponieważ w ten sposób można pominąć iterację na wszystkich elementach podrzędnych i ręcznie ustawić właściwość, ale dlaczego nie mogę wybrać, jeśli chcę to zrobić za pomocą UICollectionViewDelegate metoda?

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