Как отметил @FelixKling, наиболее вероятным сценарием является то, что узлы, которые вы ищете, еще не существуют.
Однако современные методы разработки часто могут манипулировать элементами документа за пределами дерева документов либо с DocumentFragments, либо просто отсоединением / повторным подключением текущих элементов напрямую. Такие методы могут использоваться как часть шаблонов JavaScript или для предотвращения чрезмерных операций перерисовки / переплавки, в то время как элементы, о которых идет речь, сильно изменяются.
Аналогично, новая функциональность «Теневой DOM» развертывается в современных браузерах позволяет элементам быть частью документа, но не обрабатываться запросом document.getElementById и всеми его методами sibling (querySelector и т. д.). Это делается для инкапсуляции функциональных возможностей и, в частности, скрыть его.
Опять же, скорее всего, элемент, который вы ищете, просто (пока) в документе, и вы должны сделать, как предлагает Феликс , Тем не менее, вы также должны знать, что это все чаще является не единственной причиной того, что элемент может быть необоснованным (временно или постоянно).
К сожалению, нет.
Каждый UICollectionView
имеет объект макета (подкласс UICollectionViewLayout
), который описывает, где каждая ячейка должна находиться в представлении прокрутки представления коллекции и какие ячейки видны в данном CGRect. У UITableView
этого нет, поэтому было бы намного сложнее делать что-либо, что манипулирует положением его клеток.
В дополнение к анимации UIView
объектов, UIKit Dynamics можно использовать для прямой анимации UICollectionViewLayoutAttributes
, что необходимо для класса стилей UITableView
или UICollectionView
, в котором есть многократно используемые ячейки, которые могут быть не все на экране, но который все еще был бы частью "физики" UIDynamicAnimator
. UIDynamicAnimator
методы, такие как layoutAttributesForCellAtIndexPath:
, могут затем использоваться для заполнения вашего объекта макета.
Поскольку не существует эквивалентного объекта макета для UITableView
и нет эквивалентного кода UIDynamicAnimator
для работы за пределами экрана UITableView
, вероятно, вам будет гораздо проще переключиться на UICollectionView
, если вы хочу такое поведение.