0

我正在使用 GLSprite 基本代码。我有一个 EAGLAppDelegate 和一个 EAGLView。我尝试向委托添加一个 navController 变量:

// AppDelegate.h
@property (nonatomic, strong) UINavigationController *navController;
// AppDelegate.m
@synthesize navController = _navController;

然后在 touchesBegan 中执行以下操作(用于测试),但 navController 为 NULL 并且什么都没有出现?我怎样才能解决这个问题?

GLSpriteAppDelegate *ad = (GLSpriteAppDelegate *)[[UIApplication sharedApplication] delegate];

SLComposeViewController *fbController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
SLComposeViewControllerCompletionHandler __block completionHandler=^(SLComposeViewControllerResult result){
    [fbController dismissViewControllerAnimated:YES completion:nil];
    switch(result){
        case SLComposeViewControllerResultCancelled:
        default:
            NSLog(@"Cancelled.....");
            break;
        case SLComposeViewControllerResultDone:
            NSLog(@"Posted....");
            break;
    }};
//[fbController addImage:[UIImage imageNamed:@"1.jpg"]];
[fbController setInitialText:@"Test message"];
[fbController addURL:[NSURL URLWithString:@"http://www.test.com"]];
[fbController setCompletionHandler:completionHandler];
[ad.navController presentViewController:fbController animated:YES completion:nil];
4

1 回答 1

0

添加一个变量是不够的,你必须在里面放一些东西......

您的导航控制器 ( navController) 是nil因为您没有为它分配任何东西。另请注意,如果您希望控制器出现,导航控制器必须在屏幕上。

通常,您应该从当前控制器中呈现一个控制器。如果你正确地构建你的类,你就有了在控制器类中呈现控制器的代码。但是,您始终可以通过以下方式访问窗口根控制器

[ad.window.rootViewController presentViewController:...]
于 2013-04-13T12:32:38.177 回答