Ios 从AppDelegate影响视图

Ios 从AppDelegate影响视图,ios,view,storyboard,appdelegate,Ios,View,Storyboard,Appdelegate,我知道这是一个初学者的问题,但我就是找不到解决办法。 我有一个带有故事板的应用程序。这是一个选项卡式视图应用程序,每个选项卡都指向导航视图控制器,而不是根视图控制器。 在导航视图控制器中,我有一个登录按钮。按下它会向应用程序代理发送一条消息,以处理打开与Facebook的会话。 我想在与facebook的会话打开后,将按钮的标题设置为注销,因为如果我再次按下按钮,它就会这样做。 这是所有的视觉编程,而不是硬编码,所以很多代码都丢失了。 现在我知道只有一个app委托实例,因此从视图访问它非常容易,

我知道这是一个初学者的问题,但我就是找不到解决办法。 我有一个带有故事板的应用程序。这是一个选项卡式视图应用程序,每个选项卡都指向导航视图控制器,而不是根视图控制器。 在导航视图控制器中,我有一个登录按钮。按下它会向应用程序代理发送一条消息,以处理打开与Facebook的会话。 我想在与facebook的会话打开后,将按钮的标题设置为注销,因为如果我再次按下按钮,它就会这样做。 这是所有的视觉编程,而不是硬编码,所以很多代码都丢失了。 现在我知道只有一个app委托实例,因此从视图访问它非常容易,但是如何从app委托访问视图的活动会话呢? 我试着把它放在viewDidLoad方法中,但显然来自Facebook API的回调没有重新加载视图(同样,它也不应该重新加载视图,因为它不会让系统再次毫无意义地工作)


您知道如何让应用程序代理向视图的activee会话发送消息吗?

以下是几种方法:

  • 您可以使用get-your app delegate在用户登录/注销时发布通知(Facebook库可能已经发布通知了?),并且您的视图控制器可以注册此通知,以便在Facebook会话更改状态时更改其状态。您还需要在
    viewDidLoad
    方法上执行一些操作,这样,如果用户有来自上一次登录的会话,则控制器将自身置于正确的初始状态。有关通知编程的更多信息,请查看
  • 您可以在视图控制器上实现
    viewwilldisease:animated
    中的代码,以便在用户登录后显示视图时,控制器查询应用程序代理以确定您的会话状态。我怀疑这就是您试图通过将代码放入
    viewDidLoad
    中来实现的,但是视图已经加载,因此登录后不会调用此代码<代码>视图将出现:动画在视图出现之前被调用

  • 在将消息发送给应用程序代理之前,能否切换按钮标题?(也就是说,当按钮被选中时,您知道它将在下一次点击时更改其功能。)不,因为在登录应用程序代理之前,我不知道它是否成功。我在appdelegate中有表示标志的属性。true=我有会话,按钮应为注销或false我没有,我需要登录。