【问题标题】:How do I call presentViewController from an OpenGLES based app?如何从基于 OpenGLES 的应用程序调用 presentViewController?
【发布时间】:2013-04-13 12:25:20
【问题描述】:

我正在使用 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];

【问题讨论】:

  • 您是否创建了navController
  • 您似乎没有在任何地方分配初始化您的导航控制器。
  • 我以为@synthesize navController = _navController;正在将基类变量复制到本地变量或其他东西,我猜不是。

标签: ios objective-c uiview uinavigationcontroller


【解决方案1】:

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

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

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

访问窗口根控制器
[ad.window.rootViewController presentViewController:...]

【讨论】:

  • 感谢您的帮助,我使用了ad.window.rootViewController,它没有崩溃,但它也没有做任何事情,ad.window.rootViewController的值是有效的。这是在 iOS 6.1 模拟器上。如果我的游戏正在显示,那么我假设 ad.window.rootViewController 在屏幕上?是否有我应该检查的返回值,我应该如何进行?
猜你喜欢
  • 1970-01-01
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多