FBProfilePictureView对象不会显示图像

时间:2012-11-13 16:21:45

标签: ios facebook sdk profile

我正在为3.1 iOS SDK做scrumptios facebook开发人员教程。 我设法从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。"

并通过添加[FBProfilePictureView class];以FB教程建议的方式解决了这个问题 to" applicationdidfinishlaunching:withoptions"在app delegate中。

任何想法为什么图片不会显示?

link to the tutorial

7 个答案:

答案 0 :(得分:21)

在didFinishLaunching的app委托方法中添加[FBProfilePictureView class];作为第一行似乎对我来说有点不好。

查看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.
// http://stackoverflow.com/questions/1725881/unknown-class-myclass-in-interface-builder-file-error-at-runtime
// [FBProfilePictureView class];

我尝试添加-ObjC标记,但效果很好。

答案 1 :(得分:3)

要解决此问题,请将此添加为app delegate应用程序中的第一行:didFinishLaunchingWithOptions:method:

[FBProfilePictureView类];

答案 2 :(得分:2)

如facebook网页中所述,您需要输入[FBProfilePictureView类];作为didFinishLaunching的app委托方法的第一行。 (注意他们的示例代码没有这个,但仍然有效,在我的情况下,如果没有它,它将无法工作。

我创建了一个UIView对象,然后将其从UIView选择到FBProfilePictureView。这将断开程序与IB之间的任何连接,因此您需要重新连接,您无法看到图片的错误是由于对象未连接到IBOutlet项目。 我不确定剪切和粘贴是否会起作用,也许它会,但我从UIView创建了对象,并通过IB手动更改了类。

没有[FBProfilePictureView类];它会给你一个错误。

如果正确完成,如果您查看XIB - 在对象窗口/列表中,您应该看到“配置文件图片视图”以及Button和Label而不是FBProfilePictureView。来自facebook的个人资料图片应显示。

答案 3 :(得分:1)

我有同样的问题。我的解决方案是取消选中xib文件的“File Inspector”中的“Use autolayout”选项。要打开“文件检查器”,请在打开xib文件后按cmd +选项+ 1。

编辑1 :找到另一种解决方案。

尝试将宽度约束和高度约束设置为纵断面图片视图。我发现this tutorial很有用。

答案 4 :(得分:0)

我有同样的问题,xcode4.5.1 ios6。 要解决这个问题:在IB中取消选中对FBprofilepictureview使用autolayout,也取消选中“autoresize subview”到视图中

答案 5 :(得分:0)

他们(fb开发者论坛)说在你的app委托中粘贴了像那样的那种方法

 - (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];

它会神奇地起作用:)

答案 6 :(得分:0)

不会自动加载使用类别扩展现有类的类。不会自动加载从Xcode界面构建器使用的类,例如,通过在.xib文件中绘制视图,然后从界面构建器UI将其作为FBLoginView分类,将FBLoginView添加到界面时。

class有助于创建指向FBProfilePictureView的指针。