0

有没有人有示例代码说明如何使用框架中的“MXTouchViewGroup *”代码来创建/使用底部的标签栏。查看 MXToughViewGroup* 的代码,并不是 100% 清楚我将如何设置/使用带有标签栏的导航框架。不幸的是,MonoCross 书也没有这种情况的例子。

任何帮助,将不胜感激。

提前致谢。

4

1 回答 1

0

因此,在浏览了 MonoCross 源代码之后,我想出了如何在使用 MonoCross 模式时使用 MonoTouch/iOS 选项卡栏,特别是在继续使用 MonoCross.Navigation 在您的应用程序中移动时:

//------- MonoCross Shared Application

// Main Menu
NavigationMap.Add("Menu/Tab1", new Tab1Controller());
NavigationMap.Add("Menu/Tab2", new Tab2Controller());
NavigationMap.Ass("Other", new OtherController());

// Set default navigation URI
NavigateOnLoad = "Menu/Tab1";

//------- MonoCross.Touch Container

// init monocross application
MXTouchContainer.Initialize(new SharedApplication(), this, window)

// Add view to container as usual
MXTouchContainer.AddView<ModelTab1>(typeof(Tab1View),ViewPerspective.Default);
MXTouchContainer.AddView<ModelTab2>(typeof(Tab2View),ViewPerspective.Default);
MXTouchContainer.AddView<ModelOther>(typeof(OtherView),ViewPerspective.Default);

// Create a MXTouchViewGroup, with items representing tab items     
MXTouchViewGroupItem[] menuItems = new MXTouchViewGroupItem[] {
        new MXTouchViewGroupItem(typeof(Tab1View),"Tab 1!",""),
        new MXTouchViewGroupItem(typeof(Tab2View),"Tab 2!",""), 
            };
MXTouchViewGroup tvg = new MXTouchViewGroup(new MXTouchViewGroupTabController(),menuItems);

// Add the group to MXTouchContainer.ViewGroups 
List<MXTouchViewGroup> ltvg = ((MXTouchContainer)MXTouchContainer.Instance).ViewGroups;
ltvg.Add(tvg);

// navigate to to starting location now
MXTouchContainer.Navigate(null,MXTouchContainer.Instance.App.NavigateOnLoad);

在共享应用程序中,像往常一样创建从 MXController 派生的控制器并将它们添加到 NavigationMap。在“共享应用程序”中绝对没有什么特别的事情要做

在 MonoCross Container 中,您也照常将派生自 MXTouch*View 的视图添加到容器中。不同之处在于创建一个“MXTouchViewGroup”,并为每个选项卡创建一个“MXTouchViewGroupItems”;每个“MXTouchViewGroupItem”都有一个与之关联的视图。您需要为您的标签栏创建一个适当的“MXTouchViewGroup”项目,然后将组添加到您的“MXTouchContainer”,如图所示,然后让框架像往常一样导航到第一个视图。

所有这一切的结果是,当导航到“组”中的视图(即“Tab1View”或“Tab2View”)时,框架将自动呈现带有视图的选项卡栏,而无需任何进一步的干预。如果您导航到不在“组”中的视图(即“OtherView”),标签栏将不会呈现。

而已。

于 2012-05-17T22:21:03.463 回答