我在使用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我不知道如何解决这个问题。我只是想分享一个图片。
感谢您的帮助。
答案 0 :(得分: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
}
不要忘记将视图的委托设置为呈现视图控制器中的视图控制器。