愤怒的黑客,
我的简单建议是跟随zoul one。我认为实现您想要的最简单的方法是创建一个UINavigationController
并将其用作其他控制器的包含控制器。
因此,可以在 中创建一个UINavigationController
并将AppDelegate
其设置rootViewController
为您的window
. 当您创建 a 时,UINavigationController
您可以将根控制器传递给它(在本例中MainForm
)。
在 MT 中看起来如下(不要相信代码,因为我是手工编写的)
private UINavigationController navController;
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
navController = new UINavigationController(new MainForm());
window.RootViewController = navController;
window.MakeKeyAndVisible ();
return true;
}
现在,当您启动应用程序时,您将看到MainForm
的视图,并且能够允许在不同控制器之间导航。
例如,MainForm
你可以去DetailForm
喜欢:
this.NavigationController.PushViewController(new DetailForm(), true);
这同样适用DetailForm
于MoreMinorDetails
。
退一步,例如MoreMinorDetails
从DetailForm
使用
this.NavigationController.PopViewControllerAnimated(false);
转到根控制器 ( MainForm
) 内DetailForm
或MoreMinorDetails
使用
this.NavigationController.PopToRootViewControllerAnimated(false);
关于空间,这不是问题。我猜你有两种方法。第一个是移动您在导航控制器栏中创建的栏项目。在每个控制器中,您可以决定哪些按钮可见或不可见。第二个是完全隐藏导航栏并使用您已经创建的按钮。
在这两种方式中,您都可以将操作附加到这些按钮并允许在控制器之间导航。此外,如果您选择第一个,您还可以隐藏导航栏的后退按钮。
需要记住的一个简单说明如下:
由于导航栏对于 a 是唯一的UINavigationController
,因此该栏将为您在导航控制器中推送的所有控制器保持其状态。为了解释这个概念,假设你有两个控制器,比如 A 和 B。你首先按下 A,然后在它的ViewWillAppear
方法中隐藏一个按钮。当您按 B 时,该按钮仍然不可见。如果你想取消隐藏B中的按钮,你可以玩它的ViewWillAppear
方法(像以前一样)等等......
如果你不想玩,UINavigationController
你应该看看UIViewController
类提供的新视图控制器包含功能。这仅适用于 iOS >= 5。您可以获得相同的UINavigationController
机制效果,但可能更难实现。
希望有帮助。