Right now I have an application with a sliding menu. The main window has a view that is the 'main body view'. When a user selects an item from the sliding menu, it changes which view is added to the main body view. Here is the .xml for index:
<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>
and the controller:
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());
The part of the code that is breaking on IOS is $.mainbodyview.add(Alloy.createController('news').getView());
and anything like it. It works perfectly on Android. Is there something I'm missing for it to be IOS compatible?
I was also experiencing the same issue. I was using the window tag before which was working fine for Android but not for iPhone but then i change my 'Window' tag to 'View' tag in views. It start working fine for both Android and iPhone.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.