简体   繁体   中英

Titanium Appcelerator SubView not Working in IOS

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM