現在、スライドメニューを備えたアプリケーションがあります。メイン ウィンドウには、「本体ビュー」というビューがあります。ユーザーがスライド メニューからアイテムを選択すると、メイン ボディ ビューに追加されるビューが変更されます。インデックスの .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 と互換性があるために欠けているものはありますか?