2013-05-13 25 views
0

我在使用UIView中的Facebook SLComposeViewController時遇到問題。我遇到的問題是因爲我有一個UIView而不是我繼承的UIViewController。如何在UIView而不是UIViewController中使用Facebook SLComposeViewController

我已經導入:

#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

這樣做打破了MVC模式。這是視圖的控制器應該負責這樣的任務。 – Moxy 2013-05-13 16:14:56

+0

@莫克謝謝。有沒有辦法解決它?我正在使用一些示例代碼,它使用UIView – hanumanDev 2013-05-13 16:21:25

+0

試試我的答案... – 2013-05-13 16:24:40

回答

2

UIViews不能呈現視圖控制器。你需要設置一個方法來回調UIViewController,它將呈現給你的UIView。

通常的做法是在視圖上創建委託。當在該視圖上發生某些事情時,委託方法被調用哪些消息實現委託方法的視圖控制器。從那裏,您可以從您的父視圖控制器呈現視圖控制器。

在你看來的.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 
} 

不要忘記視圖的委託設置爲呈現視圖控制器內的視圖控制器。

相關問題