0

我在 UIView 中使用 Facebook SLComposeViewController 时遇到问题。我遇到的问题是因为我有一个 UIView 而不是我继承的 UIViewController 。

我已经导入:

#import <Social/Social.h>
#import <Accounts/Accounts.h>

并尝试使用以下方式展示 Facebook 共享:

 SLComposeViewController *controllerSLC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[controllerSLC setInitialText:@"First post from my iPhone app"];
[controllerSLC addURL:[NSURL URLWithString:@"http://www.test.com"]];
[controllerSLC addImage:[UIImage imageNamed:@"test.jpg"]];
[self presentViewController:controllerSLC animated:YES completion:Nil];

这是它不会显示视图的最后一行,因为我继承自 UIView 而不是 UIVIewController 我不知道如何解决这个问题。我只想分享一张图片。

谢谢你的帮助。

4

1 回答 1

2

UIViews 不能呈现视图控制器。您需要设置一种方法来回调呈现给您的 UIView 的 UIViewController。

一种常见的方法是在您的视图上创建一个委托。当该视图发生某些事情时,会调用委托方法,该方法会向实现您的委托方法的视图控制器发送消息。从那里,您可以从您的父视图控制器呈现视图控制器。

在您视图的 .h 文件中:

@protocol YourUIViewDelegate <NSObject>
- (void)theDelegateMethod;
@end

@interface YourUIView : UIView
@property (assign, nonatomic) id<YourUIViewDelegate> delegate;

在您的视图的 .m 文件中(我假设在您想要显示此视图控制器的位置调用按钮按下或其他一些操作方法):

- (void)buttonTapped:(id)sender
{
    [self.delegate theDelegateMethod];
}

在呈现委托方法的视图控制器 .h 中:

@interface ThePresentingViewController <YourUIViewDelegate>

在该视图控制器的 .m 文件中:

- (void)theDelegateMethod
{
    // All of the SLComposeViewController code
}

不要忘记将视图的委托设置为呈现视图控制器中的视图控制器。

于 2013-05-13T16:22:45.313 回答