我可以发送performSegueWithIdentifier:除了self以外的任何东西吗?

时间:2014-07-23 13:01:40

标签: ios uistoryboard uistoryboardsegue

我在UIViewController上有一个类别来处理来自我的网络层的错误。如果我在响应网络呼叫时收到身份验证错误,我想执行一个撤消segue,将我带回LoginViewController

但是,我不想在我的Storyboard中为每个视图控制器添加适当的展开segue。我可以简单地在我的视图控制器导航的“顶部”UITabBarController中声明展开segue,然后说

[self.tabBarController performSegueWithIdentifier:@"UnwindToLoginSegueIdentifier" sender:self]

...来自我的UIViewController + ErrorHandling类别?

1 个答案:

答案 0 :(得分:0)

不,你不能这样做。展开segue必须来自您要解开的控制器,并且所有segue都需要从故事板中的特定实例连接。登录视图控制器确实应该是一个以模态方式呈现的控制器,而不是其中一个选项卡,因为你只是简单地需要它,然后它应该消失。如果您以这种方式设置应用程序,则可以在任何控制器中显示和关闭它(在第一个选项卡中显示控制器中没有动画的情况,如果这是用户在应用程序启动时看到的内容)。除非您使用所有其他控制器继承的功能创建一个公共基本控制器,否则您仍然必须在每个控制器中都有代码来执行此操作。