代码之家  ›  专栏  ›  技术社区  ›  Vin

对于uisplitviewcontroller的detailview,将不会调用viewwill

  •  3
  • Vin  · 技术社区  · 16 年前

    我正在试验splitviewcontroller,它是为ipad而引入的,并且停留在一个点上。我在SplitViewController的详细视图上有一个按钮,单击该按钮可打开模式视图。现在,我想更改细节视图上UI控件的位置,当模态视图被取消时。

    这样做的一个非常明显的方法是在DetailView的ViewWillAppears方法中捕获视图转换。但在这种情况下不会被调用。我记得在TabbarController中遇到了同样的问题,在调用每个选项卡项中的视图出现之前,需要设置[TabbarController viewwill appear:animated]。我也试过用SplitViewController来做这个,但是这个似乎不起作用。

    有什么想法吗??

    1 回复  |  直到 16 年前
        1
  •  2
  •   ohhorob    16 年前

    如果由于模式视图中发生的操作而需要定位,则应使用显式委托回调。这将允许您清楚地指定应用程序的控制流和结果行为。

    然后,您应该定义一个协议,该协议具有特定的方法,其中包含有关所采取操作的相关信息。当操作在模式中发生时,对委托执行协议方法,它可以对该事件做出响应(对于您来说,它似乎是按钮位置的重新布局)。

    要了解足够抽象以处理一般模态行为的方法,请看 UIAlertViewDelegate 协议。在这里,学员将获得 alertViewCancel: 当用户决定不采取任何行动时,或 alertView:didDismissWithButtonIndex: 当他们选择其中一个选项时。

    这是如何定义协议的良好开端。

    如果需要多个视图控制器对模式中采取的操作做出响应,例如登录模式,那么更好的机制是通知。

    推荐文章