Ячейки 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
, но мне нужна клетка для этого, а я нет, потому что не могу получить ее из клеток.
РЕДАКТИРОВАТЬ:
По предложению Джонатана я реализовал функцию прокрутки до найденного. это немного зависит от реализации, так что вам, вероятно, придется настроить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;
}