钛合金-无法禁用标签栏内的标签使用id

Titanium Alloy - unable to disable Label inside Tabbedbar using id

本文关键字:标签 id 标签栏 钛合金      更新时间:2023-09-26

我有一个包含标签的TabbedBar,里面有标签,我需要通过编码在.js文件中更改其启用属性。我已经尝试设置该特定标签的id,并已使用。.js文件中的$.lblProf.enabled = false;。它的抛出错误:

Undefined不是一个对象(计算'$. lblprof . ')。Enabled = false')

demo.xml

<TabbedBar id="tabbedBar" platform="ios" backgroundColor="#369" top="44dp" height="30dp" width="300" index="0" onClick="tabBarClick">
   <Labels> 
      <Label>Details</Label>
      <Label>Photos</Label>
      <Label>Documents</Label>
      <Label id="tabProfile">Profile</Label>                        
   </Labels>
</TabbedBar>

demo.js

$.tabProfile.enabled = true;

如果我试图直接禁用,即

<Label id="lblProf" enabled="false">

正如@visola所提到的,您的标签需要一个ID以便以编程方式访问它们。否则,Alloy会给他们一个自动生成的ID,这通常对人类没有帮助。

xml

<TabbedBar id="tabbedBar" platform="ios" backgroundColor="#369" top="44dp" height="30dp" width="300" index="0" onClick="tabBarClick">
   <Labels id='labelsList'> 
      <Label id='details'>Details</Label>
      <Label id='photos'>Photos</Label>
      <Label id='documents'>Documents</Label>
      <Label id='tabProfile'>Profile</Label>                        
   </Labels>
</TabbedBar>

对于tabProfile分配,$是页面层次结构中的顶级对象。因此,$.tabProfile不存在。这就是为什么改变它没有效果。您需要进一步深入到$.TabbedBar.Labels.Label页。也就是说,Label没有enabled属性。所以,你的应用程序抛出undefined错误。

我将查看Titanium.UI.iOS.TabbedBar文档以获取更多示例。看来您需要通过更改颜色来模拟禁用它们,例如浅灰色,然后将touchEnabled设置为false。

希望这能帮助你前进。

相关文章: