FBProfilePictureView对象无法显示图片

13

我正在进行美味可口的Facebook开发者3.1 iOS SDK教程。我已经成功从Facebook显示我的个人资料名称,但FBProfilePictureView无法显示照片。

这是iboutlet的代码:

@property (strong, nonatomic) IBOutlet FBProfilePictureView *useProfileImage;

这是我用来展示图片的内容

self.useProfileImage.profileID = user.id;

我确认了它通过在标签中显示来改变图像的profileid变量。

当我第一次运行项目时,我遇到了这个错误

"2012-05-18 04:04:11.620 Scrumptious[6548:f803] Interface Builder文件中的未知类FBProfilePictureView。"

并按照FB教程建议的方式解决了它 - 在应用程序委托的“applicationdidfinishlaunching: withoptions”中添加 [FBProfilePictureView class];

有什么想法为什么图片不会显示吗?

教程链接

7个回答

21

在 didFinishLaunching 方法的第一行添加 [FBProfilePictureView class]; 对我而言似乎有些 hacky。

查看 SDK 内部的 HelloFacebookSample。下面是 4 行注释:

// If you have not added the -ObjC linker flag, you may need to uncomment the following line because
// Nib files require the type to have been loaded before they can do the wireup successfully.
// https://dev59.com/z3I-5IYBdhLWcg3wsKl4
// [FBProfilePictureView class];

我尝试添加-ObjC标志,它正常工作。


3
为了解决这个问题,在应用程序委托的application:didFinishLaunchingWithOptions:方法中,将以下内容作为第一行添加:
[FBProfilePictureView class];

2

根据Facebook网页文档,您需要在didFinishLaunching的应用程序委托方法中将[FBProfilePictureView class]作为第一行。 (请注意,他们的示例代码没有这个,但仍然可以工作,在我的情况下,没有这个就无法工作。

我创建了一个UIView对象并加以调整大小,然后从UIView选择了FBProfilePictureView类。 这将断开程序和IB之间的任何连接,因此您需要重新连接,导致无法看到图片的错误是由于对象未被连接到IBOutlet项。

我不确定是否可以进行剪切和粘贴,也许可以,但我是从UIView创建对象,然后通过IB手动更改类。

如果没有[FBProfilePictureView class],将会给出错误提示。

如果正确执行,如果查看XIB - 在对象窗口/列表中,应该看到“Profile Picture View”以及Button和Label,而不是FBProfilePictureView。 来自Facebook的个人资料图片应该会显示。


1
我有同样的问题。我的解决方案是在xib文件的“文件检查器”中取消选中“使用自动布局”选项。要打开“文件检查器”,请在打开xib文件后按cmd+option+1。 编辑1:刚找到另一个解决方案。
尝试为个人资料图片视图设置宽度约束和高度约束。我发现this tutorial很有用。

没起作用 :( 我已经禁用了自动布局,因为我在5.1模拟器上运行它。限制宽度也没有起作用。 - Yoav Schwartz
更新:我从示例文件中复制了视图控制器,它可以正常工作,不知道为什么。猜想可能是在 XIB 文件中做错了什么。 - Yoav Schwartz

0

他们(fb开发者论坛)说将它粘贴到您的应用程序委托didLunch方法中,就像这样

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];



        [FBProfilePictureView class];



        // Create a LoginUIViewController instance where the login button will be
        LoginUIViewController *loginUIViewController = [[LoginUIViewController alloc] init];

        // Set loginUIViewController as root view controller
        [[self window] setRootViewController:loginUIViewController];

        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];
        return YES;
    }

只需替换

    [FBProfilePictureView class]; 

with these commented lines it will work 

    // Override point for customization after application launch.

    // Load the FBProfilePictureView
    // You can find more information about why you need to add this line of code in our troubleshooting guide
    // https://developers.facebook.com/docs/ios/troubleshooting#objc
    [FBProfilePictureView class];

它会像魔术一样工作 :)


0

我遇到了同样的问题,xcode4.5.1 ios6。 要解决这个问题,请在IB中取消FBprofilepictureview的自动布局选项,并在视图中取消“自动调整子视图”的选项。


0
使用类别扩展现有类的类不会自动加载。例如,当您通过在.xib文件中绘制视图,然后将其分类为FBLoginView来添加FBLoginView到界面时,从Xcode界面构建器使用的类不会自动加载。 class有助于创建指向FBProfilePictureView的指针。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接