使用 Appcelerator 更新动态创建的 ImageView

Updating a dynamically created ImageView with Appcelerator

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

所以,我有一个应用程序可以从应用程序外部托管的 JSON 文件中提取员工列表,我将所有这些数据缓存在板载数据库中,并为我内部的每个员工创建一个蒙版图像循环。

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' 更新为我应用中其他地方的 'else',这样我就不必经常查找和刷新每一张图片。

我想做这样的事情:

// 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],我会收到此错误。

"Can't find variable: employeeImage1";

我该如何解决这个问题?

有什么想法吗?

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

(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