Facebook iOS SDK - 跳转到另一个视图

Posted

技术标签:

【中文标题】Facebook iOS SDK - 跳转到另一个视图【英文标题】:Facebook iOS SDK - jumping to another view 【发布时间】:2012-05-16 12:22:46 【问题描述】:

我是 ios 开发的新手,我已经开始使用 ARC 实现 Facebook SDK。如教程所示,我在 AppDelegate 中添加了 Facebook 实例。我需要应用程序登录 Facebook,而不是在应用程序 didFinishLoading 时,而是在按下按钮时。

我在我的视图控制器中创建了一个按钮和一个 IBAction,我正在使用 IBAction 从 AppDelegate 调用一个函数。 AppDelegate 中的函数进行登录,然后,当一切正常时,将我返回到相同的视图。我需要实现以下内容:

    当我登录时,函数 fbDidLogin 被调用,我希望我的应用程序转到另一个视图。如何从我的 AppDelegate 执行此操作?

    这个函数在 AppDelegate 中,因为 facebook 实例在那里。关于应用程序的架构有更好的解决方案吗?

谢谢!

【问题讨论】:

【参考方案1】:

正如 Mahmoud 上面指出的那样,您可以使用

- (void)fbDidLogin 
        [self.navigationController pushViewController:<#(UIViewController *)#> animated:<#(BOOL)#>]
  

但根据我的经验,最好将您的 facebook 对象保持为单例(阅读 Singleton),就好像您需要在程序中的其他地方访问此对象一样,您需要再次访问您的 appdelegate 对象,这会造成非常混乱编码

另一方面,将其设置为单例可以让您更好地控制该对象,并且您实际上只需要一个 facebook 对象实例

【讨论】:

我想我会坚持使用单例 - 听起来是个好主意。【参考方案2】:

尝试在视图控制器中添加 Facebook 代码并将 Facebook 对象作为属性。 在 Appdelegate 中将此视图控制器添加到您的窗口,并在从 facebook 获取身份验证时访问视图控制器内的 facebook 对象

[viewcontroller.facebook handleOpenURL:url];

fbDidLogin 将在您的视图控制器中,因此您可以推送另一个视图

- (void)fbDidLogin 
            [self.navigationController pushViewController:<#(UIViewController *)#> animated:<#(BOOL)#>]

【讨论】:

以上是关于Facebook iOS SDK - 跳转到另一个视图的主要内容,如果未能解决你的问题,请参考以下文章

IOS 基于页面的应用程序:如何跳转到另一个页面

登录后 Facebook IOS SDK 导航到另一个控制器不起作用

iOS APP 跳转到京东详情页面

ios-Facebook 登录委托方法不起作用

iOS开发:采用URI方式跳转到各类地图进行导航

iOS开发:采用URI方式跳转到各类地图进行导航