使用Appcelerator更新动态创建的ImageView

时间:2016-04-25 15:01:43

标签: appcelerator appcelerator-titanium

我尝试做一些我认为很简单的事情,但只是在使用Titanium 5.2.2 SDK的iOS上遇到一些问题。

所以,我有一个应用程序从应用程序外部托管的JSON文件中下载Employees列表,我将所有数据缓存在板载数据库中,并为我的循环中的每个员工创建一个屏蔽的图像。

employeeImage[i] = Titanium.UI.createMaskedImage({
                        mask : employee_image, // background image
                        tint: 'black',
                        mode : Titanium.UI.iOS.BLEND_MODE_COLOR,
                        width: 210,
                        height: 210,
                        touchEnabled: false,
                        custom_employee_id: employee_id
                    });

我需要能够引用该图像并更新来自' black'的色调。对某些事情'否则'在我的应用程序的其他地方,所以我不必不断查看并刷新每个图像。

我想做这样的事情:

// get the employee status
            var db = Ti.Database.open('Enter');
            var getEmp = db.execute('SELECT employee_id, employee_status FROM Employee');
                while (getEmp.isValidRow())
                {
                  var empID = getEmp.fieldByName('employee_id');
                  var empStatus = getEmp.fieldByName('employee_status');
                  Ti.API.info(empID + ' ' + empStatus);

                  // update the images correctly
                  if (empStatus == 0) {
                    // update the image mask to black if they are now out of the building
                    Ti.API.info('Status is zero');
                    //employeeImage[i].tint = 'black';
                  } else {
                    // update the image mask to transparent if they are now in the building
                    Ti.API.info('Status is ONE');
                    //employeeImage[i].tint = 'transparent';
                  }


                  getEmp.next();
                }
                getEmp.close();

                db.close();

问题是,我不知道如果它有动态名称,我是否可以将这些更改设置为图像视图。

如果它刚刚被称为employeeImage1,这将很容易。但是,如果我尝试调用employeeImage1而不是employeeImage [i],我会收到此错误。

"无法找到变量:employeeImage1&#34 ;;

我该如何解决这个问题?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

毫无疑问,您可以将对象存储为数组元素。我已将您的样本缩减到以下测试用例:

(function(){
    var count=10;
    var i=0;
    var employeeImage=[];
    for (i=0;i<10;i++){
        employeeImage[i]=Ti.UI.createButton({
            title : "Employee " + i
        });
    }
    for (var i=0;i<10;i++){
      console.log(employeeImage[i].title);
    }
})()

这是你期望的输出:

[INFO]  Employee 0
[INFO]  Employee 1
[INFO]  Employee 2
[INFO]  Employee 3
[INFO]  Employee 4    
[INFO]  Employee 5
[INFO]  Employee 6
[INFO]  Employee 7
[INFO]  Employee 8
[INFO]  Employee 9

现在,作为数组元素,您应该将其称为employeeImage [n]而不是employeeImageN,因为employeeImageN不存在,存在的是对作为数组元素存储的对象的引用。

这是否有意义。

[R