UiCollection对象
UiCollection, 控件集合, 通过选择器的`find()`, `untilFind()`方法返回的对象。
UiCollection"继承"于数组,实际上是一个UiObject的数组,因此可以使用数组的函数和属性,例如使用length属性获取UiCollection的大小,使用forEach函数来遍历UiCollection。
例如,采用forEach遍历屏幕上所有的文本控件并打印出文本内容的代码为:
```
console.show();
className("TextView").find().forEach(function(tv){
if(tv.text() != ""){
log(tv.text());
}
});
```
也可以使用传统的数组遍历方式:
```
console.show();
var uc = className("TextView").find();
for(var i = 0; i < uc.length; i++){
var tv = uc[i];
if(tv.text() != ""){
log(tv.text());
}
}
```
UiCollection的每一个元素都是UiObject,我们可以取出他的元素进行操作,例如取出第一个UiObject并点击的代码为`ui[0].click()`。如果想要对该集合的所有元素进行操作,可以直接在集合上调用相应的函数,例如`uc.click()`,该代码会对集合上所有UiObject执行点击操作并返回是否全部点击成功。
因此,UiCollection具有所有UiObject对控件操作的函数,包括`click()`, `longClick()`, `scrollForward()`等等,不再赘述。
# 获取控件集合数 |find
| 函数名 | 返回值 | 备注 |
| ------------------- | :--------: | -------------------- |
| UiCollection.size() | 整数型 | 返回集合中的控件数。 |
| **参数名** | **类型** | |
| selector | UiSelector | 选择器 |
历史遗留函数,相当于属性length。
# 取集合中控件 |get
| 函数名 | 返回值 | 备注 |
| ------------------ | :------: | --------------------------------- |
| UiCollection.get() | UiObject | 返回集合中第i+1个控件(UiObject)。 |
| **参数名** | **类型** | |
| i | 整数型 | 索引 |
历史遗留函数,建议直接使用数组下标的方式访问元素。
# 遍历集合 |each
| 函数名 | 返回值 | 备注 |
| ------------------- | :------: | -------------------------- |
| UiCollection.each() | UiObject | 遍历集合。 |
| **参数名** | **类型** | |
| func | Function | 遍历函数,参数为UiObject。 |
历史遗留函数,相当于`forEach`。参考[forEach](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)。
# 判断集合是否为空 |each
| 函数名 | 返回值 | 备注 |
| ------- | :----: | ---------------------- |
| empty() | 布尔型 | 返回控件集合是否为空。 |
# 判断集合是否非空 |nonEmpty
| 函数名 | 返回值 | 备注 |
| ---------- | :----: | ---------------------- |
| nonEmpty() | 布尔型 | 返回控件集合是否非空。 |
# 选择器遍历控件集合 |find
| 函数名 | 返回值 | 备注 |
| ------------------- | :----------: | ------------------------------------------------------------ |
| UiCollection.find() | UiCollection | 根据selector所确定的条件在该控件集合的控件、子控件、孙控件...中找到所有符合条件的控件并返回找到的控件集合。 |
| **参数名** | **类型** | |
| selector | UiSelector | |
注意这会递归地遍历控件集合里所有的控件以及他们的子控件。和数组的`filter`函数不同。
例如:
```
var names = id("name").find();
//在集合
var clickableNames = names.find(clickable());
```
# 选择器遍历控件集合EX |findOne
| 函数名 | 返回值 | 备注 |
| ---------------------- | :----------: | ------------------------------------------------------------ |
| UiCollection.findOne() | UiCollection | 根据选择器selector在该控件集合的控件的子控件、孙控件...中搜索符合该选择器条件的控件,并返回找到的第一个控件;如果没有找到符合条件的控件则返回`null`。 |
| **参数名** | **类型** | |
| selector | UiSelector | |