我有一个UISegmented控件,作为选项卡。 单击选项卡时,我想将视图更改为另一个页面。
基本上目前我有两个视图,每个视图都有自己的段控制,从一个视图切换到另一个视图,反之亦然。
如果我使用PresentModalViewController,每次用户更改uiSegment时,我都会不断地将视图添加到堆栈中。
我想将当前视图设置为新视图。 但同时要确保如果我打电话给我,我可以回复一个观点 我的应用程序是这样的结构:
[主窗口] - > [VC显示项目表] - >
|--> [VC with Segment control View 1]
| (swap between)
|--> [VC with Segment control View 2]
所以在我的两个视图中都有例如:
视图1:
partial void Tabs_Changed (UISegmentedControl sender)
{
if( btnTabs.SelectedSegment == 1) {
View2 view2 = new View2(); //load view 2
this.PresentModalViewController(view2,false);
}
}
观看2:
partial void Tabs_Changed (UISegmentedControl sender)
{
if( btnTabs.SelectedSegment == 0) {
View1 view1 = new View1(); //load view 1
this.PresentModalViewController(view1,false);
}
}
但这会让应用变得无法预测,可能是因为我不断堆积观点?
请帮忙。
杰森
答案 0 :(得分:0)
使用PresentModalViewController()方法真的不是一种方法。你确实堆叠了多个视图,这是一件坏事。
我要做的是拥有一个视图,使用UISegmentedControl并添加另外两个子视图(使用AddSubview(View)方法来执行此操作)。
在viewDidLoad方法上,使用以下命令创建视图并隐藏第二个视图:
view1 = new UIView(){BackgroundColor = UIColor.Green};
view2 = new UIView(){Hidden = true, BackgroundColor = UIColor.Red};
this.AddSubview(view1);
this.AddSubview(view2);
现在,在您的方法中:
partial void Tabs_Changed (UISegmentedControl sender)
{
bool v1Visible = btnTabs.SelectedSegment == 0);
view1.Hidden = !v1Visible;
view2.Hidden = v1Visible;
}
我没有运行代码,但应该可以运行。希望这会有所帮助。
答案 1 :(得分:0)
这可能会有所帮助。 switching between uiviewcontrollers without a UI navigator control
但不需要切换UI,从viewcontroller调用App deletegate
之类的东西var appDelegate = (AppDelegate) UIApplication.SharedApplication.Delegate;
appDelegate.switch();