0

UIView で Facebook SLComposeViewController を使用すると問題が発生します。私が抱えている問題は、継承元の UIViewController ではなく UIView があるためです。

私はインポートしました:

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

これは、UIVIewController ではなく UIView から継承しているため、ビューを表示しない最後の行です。これを修正する方法がわかりません。イメージを共有したいだけです。

助けてくれてありがとう。

4

1 に答える 1

2

UIViews はビュー コントローラーを表示できません。UIView に表示されている UIViewController にコールバックする方法を設定する必要があります。

一般的な方法は、ビューにデリゲートを作成することです。そのビューで何かが発生すると、デリゲート メソッドが呼び出され、デリゲート メソッドを実装するビュー コントローラーにメッセージが送信されます。そこから、親View ControllerからView Controllerを提示できます。

ビューの .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>

そのView Controllerの.mファイルで:

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

ビューのデリゲートを表示側のビュー コントローラー内のビュー コントローラーに設定することを忘れないでください。

于 2013-05-13T16:22:45.313 に答える