【问题标题】:CCDirector may not respond to presentviewcontroller:animationCCDirector 可能不会响应 presentviewcontroller:animation
【发布时间】:2014-09-02 19:33:02
【问题描述】:

我是 cocoa2d 的新手。我正在尝试在视图中使用 presentViewController 进行 Facebook 分享。

这里是代码:

-(void)shareFB:(NSString *)text
{
    if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {

        SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

        [controller setInitialText:text];

        [[CCDirector sharedDirector]presentViewController:controller animated:YES completion:nil];
    }
    else
    {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Sorry!" message:@"Please add Facebook account in settings menu" delegate:Nil cancelButtonTitle:@"OK" otherButtonTitles:Nil, nil];
        [alert show];
    }
}

它给出警告:

[[CCDirector sharedDirector]presentViewController:controller animated:YES completion:nil];

那:CCDirector 可能不会响应 'presentviewcontroller:animated:completion:'

【问题讨论】:

  • 这是正常工作还是应用程序崩溃
  • 是的,它崩溃了。错误:NSInvalidArgumentException',原因:'-[CCDirectorTimer presentViewController:animated:completion:]: unrecognized selector sent to instance
  • 请尝试答案并告诉我
  • 检查我的编辑,让我知道它是否有效

标签: ios iphone facebook cocos2d-iphone


【解决方案1】:

您好,我已对您的代码进行了少量更正,并粘贴在下方。它工作正常

SLComposeViewController *faceBookPost = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

[faceBookPost setInitialText:@"I am playing game"];
[faceBookPost addURL:[NSURL URLWithString:@"http://www.yourlink.com"]];
[[CCDirector sharedDirector]presentViewController:faceBookPost animated:YES completion:nil];
            faceBookPost.completionHandler = ^(SLComposeViewControllerResult result)
            {
                [[CCDirector sharedDirector] resume];
                [[CCDirector sharedDirector] startAnimation];
                [[CCDirector sharedDirector]dismissViewControllerAnimated:YES completion:nil];
            };

否则按此步骤操作

像这样使用 uinavigationcontroller 在你的 AppController 中创建一个界面

@interface MyNavigationController : UINavigationController <CCDirectorDelegate>
@end 

@interface AppController : NSObject <UIApplicationDelegate>
{
UIWindow *window_;
MyNavigationController *navController_;
CCDirectorIOS   *director_;
}

在应用控制器的 didFinishLaunchingWithOptions 中设置导航控制器

navController_ = [[MyNavigationController alloc] initWithRootViewController:director_];
navController_.navigationBarHidden = YES;
[director_ setDelegate:navController_];
// set the Navigation Controller as the root view controller
[window_ setRootViewController:navController_];

然后在你调用 SLComposeViewController 的类中呈现这样的视图

 AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
 [[app navController] presentViewController:faceBookPost animated:YES completion:nil];

两种类型都可以正常工作

【讨论】:

  • 该行出现同样的警告,同样的错误。
【解决方案2】:

好的,我知道了。

我的 CCDirector 是 NSObject 类型。我只需将其更改为 UIViewController 即可。 感谢@Blisskarthik 的帮助。

【讨论】:

    猜你喜欢
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 2011-05-24
    相关资源
    最近更新 更多