1

こんにちは私はiOSの開発に不慣れです。socialClass.hという名前のクラスを作成します

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

- (void)facebookSharingStatusCheckCall:(NSString *)url image:(NSString *)img status:(NSString *)text viewCont:(UIViewController *)uiVew;

- (void)facebookForIosSix:(NSString *)url image:(NSString *)img status:(NSString *)text viewCont:(UIViewController *)uiVew;

そしてsocialClass.mで

    - (void)facebookSharingStatusCheckCall:(NSString *)url image:(NSString *)img status:(NSString *)text viewCont:(UIViewController *)uiVew 
{
    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
        NSLog(@"service available");

     [self facebookForIosSix:url image:img status:text viewCont:uiVew];

    } else {
        // facebook for iOS 5 function will be called here
    }
}


-(void)facebookForIosSix:(NSString *)url image:(NSString *)img status:(NSString *)text viewCont:(UIViewController *)uiVew
{


if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {

        SLComposeViewController *fbcontroller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

    SLComposeViewControllerCompletionHandler myBlock = ^(SLComposeViewControllerResult result){
        if (result == SLComposeViewControllerResultCancelled) {

                NSLog(@"Post Cancelled");

            } else

            {
                NSLog(@"Post Done");
            }

            [fbcontroller dismissViewControllerAnimated:YES completion:Nil];
        };
        fbcontroller.completionHandler =myBlock;

        //Adding the Text to the facebook post value from iOS
        [fbcontroller setInitialText:text];

        //Adding the URL to the facebook post value from iOS

        [fbcontroller addURL:[NSURL URLWithString:url]];

        //Adding the Image to the facebook post value from iOS

        [fbcontroller addImage:[UIImage imageNamed:img]];
        [uiVew presentViewController:fbcontroller animated:YES completion:nil];


    }
    else{
        UIAlertView *alertView = [[UIAlertView alloc]
                                  initWithTitle:@"Sorry"
                                  message:@"You can't Post a Status right now, make sure                                  your device has an internet connection and you have                                  at least one Twitter account setup"
                                  delegate:nil
                                  cancelButtonTitle:@"OK"
                                  otherButtonTitles:nil];
        [alertView show];

        NSLog(@"UnAvailable");
    }


}

ここで、mainViewController.hを呼び出します

#import "socialClass.h"

およびmainViewController.m

- (IBAction)facebookShareBtn:(id)sender {

    [[socialClass facebookSharingStatusCheckCall:[[DataPassing sharedManager] pageURL ]
        image:[[DataPassing sharedManager]
        pageIMGurl]
        status:[[DataPassing sharedManager] pageTEXT]]
        viewCont:(UIViewController*)self];
}

以下のコードを自分で使用すると、エラーが発生します。確かに自己の見方がないからです

[自己presentViewController:fbcontrollerアニメーション:YES完了:nil]; だから私はuiViewを関数に入れて、mainViewControllerから自分自身を渡そうとします。再びメインビューでエラー

mainviewcontrollerの他の呼び出し関数からこのFacebookを使用するにはどうすればよいですか。どうも

[編集]

mainViewControllerでsocialClass.hを宣言し、ボタン[socialClass facebookForIosSix:...]で関数を呼び出します。

ここに画像の説明を入力してください

このエラーが発生しています...(UIViewController *)selfに更新した後

4

1 に答える 1

5

OK、関数定義でいくつか変更する必要があります。

まず、+ではなく前面に-が必要です。プラスはクラスメソッドを示し、-はインスタンスメソッドを示します。これをインスタンスメソッドのように使用しています。

次に、SocialClass.hファイルにMainViewController.hを含める必要があります。次に、関数に次のような名前を付けます...

- (void)facebookForIosSix:(NSString *)url image:(NSString *)img status:(NSString *)text viewCont:(MainViewController *)mainViewController;

次に、mainViewControllerで実行できます...

[socialViewController facebookSharingStatusCheckCall:@"url"  image:@"hello.png" status:@"Posting from App" viewCont:self];

これは正常に機能するはずです。

編集

関数を複数の場所で実行する場合は、MainViewController.hをインポートせずに、次のような関数を定義してください...

- (void)facebookForIosSix:(NSString *)url image:(NSString *)img status:(NSString *)text viewCont:(UIViewController *)viewController;

次に、次のように実行します...

[socialViewController facebookSharingStatusCheckCall:@"url"  image:@"hello.png" status:@"Posting from App" viewCont:(UIViewController*)self];

TBH、キャストする必要はまったくないと思いますが、安全のためにできます。

編集

ブラケットのバランスが取れていません...

- (IBAction)facebookShareBtn:(id)sender {

    [socialClass facebookSharingStatusCheckCall:[[DataPassing sharedManager] pageURL ]
        image:[[DataPassing sharedManager] pageIMGurl]
        status:[[DataPassing sharedManager] pageTEXT]
        viewCont:(UIViewController*)self];
}

これは機能します。

于 2013-01-18T21:22:10.787 に答える