13

我正在为 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。”

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

知道为什么图片不显示吗?

链接到教程

4

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

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

于 2013-05-07T04:21:47.923 回答
3

要解决此问题,请将其添加为应用委托的应用程序的第一行:didFinishLaunchingWithOptions: 方法:

[FBProfilePictureView 类];

于 2013-05-06T09:48:32.310 回答
2

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

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

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

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

于 2013-02-01T08:22:08.307 回答
1

我也有同样的问题。我的解决方案是取消选中 xib 文件的“文件检查器”中的“使用自动布局”选项。要打开“文件检查器”,请在打开 xib 文件后按 cmd+option+1。

编辑1:只需找到另一个解决方案。

尝试为个人资料图片视图设置宽度约束和高度约束。我觉得这个教程很有用。

于 2012-11-14T03:17:47.857 回答
0

我有同样的问题,xcode4.5.1 ios6。解决这个问题:在 IB 中取消选中使用 FBprofilepictureview 的自动布局,也取消选中“autoresize subview”进入视图

于 2012-12-05T10:02:15.520 回答
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];

它会神奇地工作:)

于 2014-02-06T06:49:04.897 回答
0

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

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

于 2014-03-11T21:34:01.493 回答