Titanium Appcelerator SubView 在 IOS 中不起作用
Posted
技术标签:
【中文标题】Titanium Appcelerator SubView 在 IOS 中不起作用【英文标题】:Titanium Appcelerator SubView not Working in IOS 【发布时间】:2013-10-30 22:45:06 【问题描述】:现在我有一个带有滑动菜单的应用程序。主窗口有一个视图,即“主体视图”。当用户从滑动菜单中选择一个项目时,它会更改将哪个视图添加到主体视图。这是索引的 .xml:
<Alloy>
<Window class="container">
<View id="menuview">
<View id="menuheaderview">
<Label id="menuheaderlabel">Menu</Label>
</View>
<View id="menubodyview">
<TableView id="menutableview" onClick="select">
<TableViewRow class="menurowview">
<Label class="menulabel">News</Label>
</TableViewRow>
<TableViewRow class="menurowview">
<Label class="menulabel">Calendar</Label>
</TableViewRow>
<TableViewRow class="menurowview">
<Label class="menulabel">Homework</Label>
</TableViewRow>
<TableViewRow class="menurowview">
<Label class="menulabel">Classes</Label>
</TableViewRow>
<TableViewRow class="menurowview">
<Label class="menulabel">Information</Label>
</TableViewRow>
<TableViewRow class="menurowview">
<Label class="menulabel">Help</Label>
</TableViewRow>
</TableView>
</View>
</View>
<View id="mainview">
<View id="mainheaderview">
<Button id="menubutton" onClick="showhidemenu"/>
<Label id="mainheaderlabel">News</Label>
<Button id="addbutton" />
</View>
<View id="mainbodyview" ></View>
</View>
</Window>
</Alloy>
和控制器:
var menuOpen = false;
function showhidemenu(e)
if (menuOpen)
moveTo = "0";
menuOpen = false;
else
moveTo = "35%";
menuOpen = true;
$.mainview.width = Ti.Platform.displayCaps.platformWidth;
$.mainview.animate(
left : moveTo,
curve : Ti.UI.ANIMATION_CURVE_EASE_OUT,
duration : 300
);
;
function select(e)
for (var i = 0; i < e.section.rows.length; i++)
e.section.rows[i].backgroundColor = '#212429';
var selectedRow = e.row;
selectedRow.backgroundColor = 'yellow';
if ($.mainbodyview.children.length)
$.mainbodyview.removeAllChildren();
//*************add your view here*******************
if (selectedRow.children[0].text == 'News')
$.mainheaderlabel.setText('News');
$.addbutton.visible = false;
$.mainbodyview.add(Alloy.createController('news').getView());
else if (selectedRow.children[0].text == 'Homework')
$.mainheaderlabel.setText('Homework');
$.addbutton.visible = true;
$.mainbodyview.add(Alloy.createController('homework').getView());
else if (selectedRow.children[0].text == 'Information')
$.mainheaderlabel.setText('Information');
$.addbutton.visible = false;
$.mainbodyview.add(new Alloy.createController('information').getView());
else if (selectedRow.children[0].text == 'Calendar')
$.mainheaderlabel.setText('Calendar');
$.addbutton.visible = false;
//$.mainbodyview.add(Alloy.createController('calendar').getView());
else if (selectedRow.children[0].text == 'Classes')
$.mainheaderlabel.setText('Classes');
$.addbutton.visible = false;
//$.mainbodyview.add(Alloy.createController('classes').getView());
else if (selectedRow.children[0].text == 'Help')
$.mainheaderlabel.setText('Help');
$.addbutton.visible = false;
$.mainbodyview.add(Alloy.createController('help').getView());
else
//**************************************************
showhidemenu();
;
$.index.open();
$.mainbodyview.add(Alloy.createController('news').getView());
在ios上被破解的部分代码是$.mainbodyview.add(Alloy.createController('news').getView());
和任何类似的东西。它在 android 上完美运行。为了兼容IOS,我有什么遗漏吗?
【问题讨论】:
什么是错误信息? 没有错误信息,没有加载到 mainbodyview 中。 你能从模拟器中添加你的 .tss 文件和截图吗?看起来一切正常,但您正在加载的视图显示在屏幕外,这就是它看起来像坏了的原因。通过将背景颜色更改为明亮的颜色,确保所有元素都可见。 【参考方案1】:我也遇到了同样的问题。 我使用的是窗口标签,之前它在 Android 上运行良好,但不适用于 iPhone,但后来我在视图中将我的“窗口”标签更改为“视图”标签。它开始适用于 Android 和 iPhone。
【讨论】:
以上是关于Titanium Appcelerator SubView 在 IOS 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用 Titanium appcelerator 进行游戏开发
iOS、Appcelerator Titanium 和外部附件框架
iOS LocationManager 未更新位置(Titanium Appcelerator 模块)
Appcelerator Titanium 中面向 OOP 的 CommonJS