拦截将显示视图控制器并执行一些操作

时间:2013-11-04 10:21:48

标签: ios uiviewcontroller

在我的ios应用程序中,我有几个视图控制器(标签栏控制器,视图控制器,表视图控制器......)。

我想检测何时显示视图控制器(我有任何视图控制器)。这样我想首先检查用户是否已连接。

如果他已连接,那么我将显示视图控制器。 如果他没有连接我想阻止显示视图控制器,我想显示我的登录视图控制器。

执行此操作的最佳方式是什么?

有没有办法拦截视图控制器更改以便能够停止它并执行其他操作?

3 个答案:

答案 0 :(得分:0)

最后,他们是UIViewController的子类。您可以拥有UIViewController的子类,名为MyBaseViewController(例如),方法viewWillApear:

-(void)viewWillAppear:(BOOL)animated
{

 // Check connection here...

}

在那里,您可以为用户连接时创建逻辑。

答案 1 :(得分:0)

是的,你可以在UIViewController上使用这些实例方法,作为事件的钩子,

回应查看事件

– viewWillAppear:
– viewDidAppear:
– viewWillDisappear:
– viewDidDisappear:
– viewWillLayoutSubviews
– viewDidLayoutSubviews

答案 2 :(得分:0)

如果您使用segues从每个视图控制器转到其他视图控制器,您可以使用:

-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender

您可以在当前控制器的该方法中进行所有检查,并根据用户状态(已连接或不连接)返回{​​{1}}或YES

如果您返回NO,则用户将无法导航到segue的目标控制器,您可以改为显示“登录”视图控制器。