Tôi đang cố viết kịch bản thử nghiệm bằng cách sử dụng tự động hóa trong xcode 4.5.UIACollectionXem các ô và visibleCells
Tôi có một số UICollectionView
và tôi muốn nhấp vào một số ô hiện không hiển thị.
Per documentation, tôi nên mong đợi cells
trở tất cả tế bào trong giao diện bộ sưu tập, và visibleCells
trở về chỉ có những người hiện đang nhìn thấy được.
Thay vì những gì tôi nhìn thấy là các tế bào sẽ chỉ trả lại các tế bào hiện có thể nhìn thấy, và kêu gọi visibleCells dừng kịch bản trên '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());
Đoạn mã trên sẽ trả về đúng UICollectionView
, thứ hai dòng nhật ký in:
Cells: [object UIAElementArray] length 12
mặc dù tôi có 100 mục trong chế độ xem bộ sưu tập và tập lệnh dòng nhật ký sự cố thứ ba.
Đây có phải là lỗi tài liệu/UIACollectionView không?
Bất kỳ ý tưởng nào làm cách nào tôi có thể yêu cầu tự động cuộn cho đến khi thấy ô có tên "Ô của tôi"? Tôi đã thử sử dụng someCell.scrollToVisible
, nhưng tôi cần phải có tế bào để làm điều đó, và tôi không vì tôi không thể lấy nó từ các tế bào.
EDIT:
Theo đề nghị của Jonathan Tôi đã thực hiện một cuộn cày-tìm thấy chức năng. đó là một thực hiện chút cụ thể, vì vậy có thể bạn sẽ cần phải tinh chỉnh isCellWithName
. Tôi cũng đang tìm thêm một break trong trường hợp chúng tôi không tìm thấy các tế bào cần thiết trong vòng lặp while, nếu có ai có ý tưởng, cảm thấy tự do để chỉnh sửa này.
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;
}
Cảm ơn cho các giải pháp. Hoạt động tuyệt vời. – phatmann