如何卸载菜单(UIViewControllers)

时间:2014-11-18 15:01:59

标签: c# ios uiviewcontroller xamarin.ios xamarin

我正在开发一个应用程序,用它向数据库发送和接收数据。

目前,当我以纵向或横向位置启动应用程序时,它将始终以纵向样式显示第一个菜单。当我转动第一个菜单时,它切换到横向就好了。我的AppDelegate中有属性来存储屏幕宽度和高度。

每当我第一次导航到另一个菜单时,它会从AppDelegate的屏幕宽度和高度绘制新菜单。我导航的每个菜单都完美无缺。

问题是,当菜单已经加载时,我切换到另一个菜单,转动屏幕并返回上一个菜单,布局仍处于上一个屏幕模式。例如:

  1. 我启动应用程序并以纵向模式进入第一个菜单。 AppDelegate中屏幕宽度和高度的值将更改为当前view.bounds。
  2. 我第一次导航到菜单#2。菜单#2将使用AppDelegate中的屏幕宽度和高度来绘制菜单。
  3. 我第一次导航到菜单#3。就像菜单#2一样,它从AppDelegate获取屏幕宽度和高度来绘制菜单。
  4. 我将菜单从纵向转为横向。菜单#3将重绘并将AppDelegate中的屏幕宽度和高度更改为新值。
  5. 我导航回菜单#2,但它仍然被绘制为好像处于纵向模式。
  6. 有没有办法卸载菜单(这不是“WillUnload”或“DidUnload”的过时方法)?或者,每当我导航到我已经加载到内存中的菜单时,是否会调用一个方法?

    我很乐意听到你的声音。

    爱和问候, 的Björn

1 个答案:

答案 0 :(得分:2)

    每次控制器都会调用
  • viewWillAppear:方法 视图即将显示。每当你转换到和 来自控制器,它将被调用。

    来自Apple的文档(iOS Developer Library):

      

    在接收者的视图即将添加到视图层次结构之前以及在配置任何动画之前调用此方法   用于显示视图。您可以覆盖此方法以执行自定义   与显示视图相关的任务。例如,您可以使用   此方法可将状态栏的方向或样式更改为   与所呈现视图的方向或样式协调。   如果重写此方法,则必须在某个时刻调用super   你的实施。

  • 您可以使用的另一种生命周期方法是viewWillLayoutSubviews。你可以在这里阅读更多相关信息。(iOS Developer Library