0

我在情节提要中有以下控制器:

故事板

导航控制器由左侧主视图控制器中的按钮连接。它出现在弹出窗口中。当用户单击右侧表格视图控制器顶部的“退出”按钮时,我需要返回主视图控制器,调用执行退出的方法,然后显示身份验证视图控制器(如果用户未登录,则无法使用该应用程序)。我尝试过的每一种方法都失败了。

  1. 我几乎可以通过展开 segue 来做到这一点,但如果在主视图中的展开方法中我启动身份验证视图控制器,我会收到“在演示或关闭正在进行时尝试从视图控制器关闭”警告。设置计时器以等待任意时间以完成解雇似乎是一种黑客行为。(我希望有一个“你的 segue 刚刚完成”回调。)

  2. 我不能通过在 prepareForSegue 方法中将主视图控制器设置为设置控制器的委托并在单击按钮时在其上调用委托方法来做到这一点,这将是常态,因为 segue 中的destinationViewController 不是我的设置控制器,它是容纳它的导航控制器。

有一些明显的方法可以做到这一点,对吧?也许通过将按钮附加到设置视图控制器中的方法,该方法会自行关闭,然后在完成块中触发 NSNotification?这似乎仍然很老套。

4

1 回答 1

1

您可以使用以下方法使主视图控制器成为 prepareForSegue 方法中设置控制器的委托:

 SettingsViewcontroller *settings =  [(UINavigationController *)segue.destinationViewController topViewController];
settings.delegate = self;

我认为您可以在设置控制器的 viewDidDisappear 方法中调用委托方法。

于 2013-03-27T04:20:58.303 回答