2013-10-30 25 views
0

現在我有一個滑動菜單的應用程序。主窗口的視圖是「主體視圖」。當用戶從滑動菜單中選擇一個項目時,它會更改將哪個視圖添加到主體視圖。下面是指數的.xml:鈦Appcelerator子視圖不在IOS中工作

<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兼容?

+0

什麼是錯誤信息? – daniula

+0

沒有錯誤消息,沒有加載到mainbodyview中。 –

+0

你可以從模擬器添加你的.tss文件和屏幕截圖嗎? 它看起來像所有工作,但你正在加載查看顯示在屏幕之外,這就是爲什麼它看起來像破碎。 確保所有元素都可見,並將其背景顏色更改爲明亮的東西。 – daniula

回答

0

我也遇到同樣的問題。 我之前使用的是窗口標籤,在Android之前工作正常,但不適用於iPhone,但之後我在視圖中將「窗口」標籤更改爲「查看」標籤。它開始適用於Android和iPhone。