viewWillAppear没有调用UISplitViewController的detailView

时间:2010-09-01 07:45:28

标签: iphone ipad

我正在尝试使用针对iPad推出的splitViewController,并且我已陷入困境。我在splitViewController的详细视图上有一个按钮,单击打开模态视图。现在我想在模态视图被忽略时更改详细视图上的UI控件的位置。

这样做的一个非常明显的方法是捕获detailView的ViewWillAppear方法中的视图转换。但在这种情况下,它并没有被调用。我记得在tabBarController中遇到同样的问题,在调用每个标签项的viewWillAppear之前需要设置[tabBarController viewWillAppear:animated]。我也尝试用splitViewController做这个,但这似乎不起作用。

任何想法?

1 个答案:

答案 0 :(得分:2)

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

然后,您应该定义一个具有特定方法的协议,这些方法带有有关所采取操作的相关信息。当模式中的动作发生时,在委托上执行协议方法,它可以对该事件作出反应(对你而言,它似乎是按钮定位的重新布局)。

要了解足以处理泛型模态行为的抽象方法,请查看UIAlertViewDelegate协议。在此处,代表将在用户决定不采取任何操作时收到alertViewCancel:消息,或者alertView:didDismissWithButtonIndex:在他们选择向他们提供的选项之一时收到。{/ p>

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

如果您需要许多视图控制器来对模态中采取的操作做出反应,比如登录模式,那么更好的机制就是通知。