Komórki UIACollectionView vs visibleCells

Próbuję napisać skrypt testowy za pomocą automatyzacji w kodzie xcode 4.5.

mamUICollectionView i chcę kliknąć wybraną komórkę, która nie jest obecnie widoczna.

Na dokumentacjęPowinienem się spodziewaćcells wracaćwszystko komórki w widoku kolekcji ivisibleCells aby zwrócić tylko te widoczne obecnie.

Zamiast tego widzę, że komórki zwracają tylko aktualnie widoczne komórki, a wywołanie visibleCells zatrzymuje skrypt'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());

Powyższy kod zwraca prawoUICollectionView, druki drugiej linii dziennika:

Cells: [object UIAElementArray] length 12

chociaż mam 100 pozycji w widoku kolekcji, a trzeci wiersz dziennika zawiesza skrypt.

Czy jest to błąd dokumentacji / UIACollectionView?

Jakieś pomysły, w jaki sposób mogę powiedzieć automatyzacji, aby przewijała, aż zobaczy komórkę o nazwie „Moja komórka”? Próbowałem użyćsomeCell.scrollToVisible, ale muszę mieć komórkę, żeby to zrobić, a ja nie, ponieważ nie mogę go pobrać z komórek.

EDYTOWAĆ:

Jak zasugerował Jonathan, zaimplementowałem funkcję przewijania do znalezienia. jest to trochę specyficzne dla implementacji, więc prawdopodobnie będziesz musiał się dostosowaćisCellWithName. Chcę również dodać przerwę w przypadku, gdybyśmy nie znaleźli potrzebnej komórki w pętli while, jeśli ktoś ma pomysły, możesz to edytować.

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;
}

questionAnswers(2)

yourAnswerToTheQuestion