use*_*304 1 facebook class objective-c social-framework
嗨,我是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;
Run Code Online (Sandbox Code Playgroud)
并在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");
}
}
Run Code Online (Sandbox Code Playgroud)
现在我调用mainViewController.h
#import "socialClass.h"
Run Code Online (Sandbox Code Playgroud)
并在mainViewController.m中
- (IBAction)facebookShareBtn:(id)sender {
[[socialClass facebookSharingStatusCheckCall:[[DataPassing sharedManager] pageURL ]
image:[[DataPassing sharedManager]
pageIMGurl]
status:[[DataPassing sharedManager] pageTEXT]]
viewCont:(UIViewController*)self];
}
Run Code Online (Sandbox Code Playgroud)
当我使用下面的代码与self时它会出错.绝对是因为没有自我观点
[self presentViewController:fbcontroller animated:YES completion:nil]; 所以我把uiView放在函数中并尝试从mainViewController传递self.主视图中再次出错
如何在mainviewcontroller中使用来自其他调用函数的这个facebook.谢谢
[编辑]
我在mainViewController中声明socialClass.h并在按钮中调用该函数[socialClass facebookForIosSix:...]

更新到(UIViewController*)self后,此错误正在...
好的,在功能定义中需要改变一些事情.
首先你需要一个 - 在前面而不是+.加号表示类方法,而 - 表示实例方法.您正在使用它像实例方法.
其次,您需要在SocialClass.h文件中包含MainViewController.h.然后将函数命名为...
- (void)facebookForIosSix:(NSString *)url image:(NSString *)img status:(NSString *)text viewCont:(MainViewController *)mainViewController;
Run Code Online (Sandbox Code Playgroud)
然后在mainViewController中你可以运行...
[socialViewController facebookSharingStatusCheckCall:@"url" image:@"hello.png" status:@"Posting from App" viewCont:self];
Run Code Online (Sandbox Code Playgroud)
这应该工作正常.
编辑
如果要从多个位置运行该函数,则不要导入MainViewController.h并定义函数,如...
- (void)facebookForIosSix:(NSString *)url image:(NSString *)img status:(NSString *)text viewCont:(UIViewController *)viewController;
Run Code Online (Sandbox Code Playgroud)
然后运行它...
[socialViewController facebookSharingStatusCheckCall:@"url" image:@"hello.png" status:@"Posting from App" viewCont:(UIViewController*)self];
Run Code Online (Sandbox Code Playgroud)
TBH,我认为你根本不需要施放它,只是为了安全起见.
编辑
你没有平衡括号......
- (IBAction)facebookShareBtn:(id)sender {
[socialClass facebookSharingStatusCheckCall:[[DataPassing sharedManager] pageURL ]
image:[[DataPassing sharedManager] pageIMGurl]
status:[[DataPassing sharedManager] pageTEXT]
viewCont:(UIViewController*)self];
}
Run Code Online (Sandbox Code Playgroud)
这会奏效.
| 归档时间: |
|
| 查看次数: |
938 次 |
| 最近记录: |