Ячейки UIACollectionView против visibleCells
Я пытаюсь написать тестовый скрипт, используя автоматизацию в xcode 4.5.
у меня естьUICollectionView
и я хочу щелкнуть по какой-то ячейке, не видимой в данный момент
По документацииЯ должен ожидатьcells
возвращатьвсе ячейки в представлении коллекции, иvisibleCells
вернуть только видимые в данный момент.
Вместо того, что яЯ вижу, что ячейки возвращают только видимые в данный момент ячейки, а вызов visibleCells останавливает сценарий на'undefined' is not a function (evaluating 'collection.visibleCells()')
var target = UIATarget.localTarget();
var collection = target.frontMostApp().mainWindow().collectionViews()[0];
UIALogger.logMessage("Looking in collection: " + collection);
UIALogger.logMessage("Cells: " + collection.cells() + " length " + collection.cells().length);
UIALogger.logMessage("Visible cells: " + collection.visibleCells());
Код выше возвращает правоUICollectionView
, вторая строка журнала печатает:
Cells: [object UIAElementArray] length 12
хотя у меня есть 100 элементов в представлении коллекции, и третья строка журнала вылетает скрипт.
Это ошибка документации / UIACollectionView?
Любые идеи, как я могу сказать автоматизации, чтобы прокрутить, пока не увидит ячейку с именем "Моя клетка "? Я'мы пытались использоватьsomeCell.scrollToVisible
, но мне нужна клетка, чтобы сделать это, и я нет, так как я могуполучить его из клеток.
РЕДАКТИРОВАТЬ:
По предложению Джонатана Iмы реализовали функцию прокрутки до найденного. Это'немного зависит от реализации, так что вынаверное надо будет подправитьisCellWithName
, Я'Я также хочу добавить перерыв в случае, если мы не сделалиНе найдите нужную ячейку в цикле while, если у кого-то есть идеи, не стесняйтесь редактировать это.
function isCellWithName(cell, name) {
return (cell.staticTexts()[0].name() == name);
}
function getCellWithName(array, name) {
for (var i = 0; i < array.length; i++) {
if (isCellWithName(array[i], name)) {
return array[i];
}
}
return false;
}
function scrollToName(collection, name) {
var found = getCellWithName(collection.cells(), name);
while (found === false) {
collection.dragInsideWithOptions({startOffset:{x:0.2, y:0.99}, endOffset:{x:0.2, y:0},duration:1.0});
found = getCellWithName(collection.cells(), name);
}
return found;
}