如何从 SKScene 呈现 UIViewController?

2024-01-01

我通过 Sprite Kit 进入 iOS,我认为这是不明智的。

我的目标是在游戏结束时显示“分享”按钮。点击分享按钮应该会出现一个 SLComposeViewController(Twitter 分享)。场景的内容不应改变。

决定“游戏结束”的游戏逻辑位于 SKScene 的子类 SpriteMyScene.m 中。

我可以通过这种方式在游戏结束时显示共享按钮:

-(void)update:(CFTimeInterval)currentTime {

if (gameOver){
  UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
                [button addTarget:self
                           action:@selector(sendToController)
                forControlEvents:UIControlEventTouchDown];
                [button setTitle:@"Show View" forState:UIControlStateNormal];
                button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
                [self.view addSubview:button]; 
    }
}

- (void)sendToController
{
    NSLog(@"ok");
    SpriteViewController *viewController = [SpriteViewController alloc];
    [viewController openTweetSheet];
}

我遇到困难的地方是尝试让 showTweetButton 方法起作用。我的 SpriteViewController.m 看起来像这样:

- (void)openTweetSheet
    {
     SLComposeViewController *tweetSheet = [SLComposeViewController
                                           composeViewControllerForServiceType:
                                           SLServiceTypeTwitter];

    // Sets the completion handler.  Note that we don't know which thread the
    // block will be called on, so we need to ensure that any required UI
    // updates occur on the main queue
    tweetSheet.completionHandler = ^(SLComposeViewControllerResult result) {
        switch(result) {
                //  This means the user cancelled without sending the Tweet
            case SLComposeViewControllerResultCancelled:
                break;
                //  This means the user hit 'Send'
            case SLComposeViewControllerResultDone:
                break;
        }
    };

    //  Set the initial body of the Tweet
    [tweetSheet setInitialText:@"just setting up my twttr"];

    //  Adds an image to the Tweet.  For demo purposes, assume we have an
    //  image named 'larry.png' that we wish to attach
    if (![tweetSheet addImage:[UIImage imageNamed:@"larry.png"]]) {
        NSLog(@"Unable to add the image!");
    }

    //  Add an URL to the Tweet.  You can add multiple URLs.
    if (![tweetSheet addURL:[NSURL URLWithString:@"http://twitter.com/"]]){
        NSLog(@"Unable to add the URL!");
    }

    //  Presents the Tweet Sheet to the user
    [self presentViewController:tweetSheet animated:NO completion:^{
        NSLog(@"Tweet sheet has been presented.");
    }];
}

我总是在日志中看到这样的内容:

-[UIView PresentScene:]: 无法识别的选择器发送到实例 0x13e63d00 2013-10-17 18:40:01.611 修复[33409:a0b]*终止应用程序 由于未捕获的异常“NSInvalidArgumentException”,原因: '-[UIView PresentScene:]: 无法识别的选择器发送到实例 0x13e63d00'


您正在创建一个新的视图控制器但从未呈现它:

SpriteViewController *viewController = [SpriteViewController alloc];

我假设SpriteViewController是什么呈现你的SpriteMyScene,并且您希望将控制权交还给演示者SpriteViewController.

你需要保留一个参考SpriteViewController在你的SpriteMyScene子类,然后在调用时访问该引用openTweetSheet.

在 SpriteMyScene.h 中

@class SpriteViewController;

@interface SpriteMyScene : SKScene

@property (nonatomic, weak) SpriteViewController *spriteViewController;

@end

在SpriteViewController.m中

// somewhere you initialize your SpriteMyScene object, I'm going to call it myScene

myScene.spriteViewController = self;

在 SpriteMyScene.m 中

#import "SpriteViewController.h"

- (void)sendToController
{
    NSLog(@"ok");
    // use the already-created spriteViewController
    [_spriteViewController openTweetSheet];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 SKScene 呈现 UIViewController? 的相关文章

  • iOS 无法获取人物图像

    我有两个 tableViewController 第一个有联系人列表 另一张显示详细的人员信息 第一个tableViewController的一段代码 ABAddressBookRef addressBook ABAddressBookCr
  • 如何将 .ipa 转换为 .app 文件?

    每个人 我有一些 ipa 文件 想要转换为包含 app 包的存档文件 我试图这样做 但我没有办法 有什么办法可以做到这一点吗 请帮我 将 ipa 重命名为 zip 然后提取即可
  • 如何从 Xcode 4.5 卸载 iOS 5.0 模拟器

    我已经安装了 Xcode 4 5 由于我编写应用程序是为了好玩 我不打算支持旧版 iOS 版本 并且为了节省 500 GB iMac 上的空间 是否有办法删除它 尝试从 Xcode 包中支持的平台中删除 iPhone iPhoneSimul
  • 如何本地化 iOS 故事板

    我有一个包含一些视图的 iPhone 故事板 例如 导航项标题名为News 应翻译为其他语言 当我向故事板添加新的本地化版本时 它会为新语言创建当前故事板的副本 在这里我可以更改导航项的标题 但对我来说它似乎不太有用 如果我的故事板包含 1
  • supportedInterfaceOrientations 方法不会重写其超类中的任何方法

    在 UIViewController 中 这段代码 public override func supportedInterfaceOrientations gt UIInterfaceOrientationMask if let mainC
  • NSString 对象的最大长度是多少?

    NSString 对象中可以保存的最大字符串大小是多少 这会动态变化吗 我假设 NSString 的硬限制是 NSUIntegerMax 个字符 因为 NSString 的索引和大小相关的方法返回 NSUInteger 由于当前能够运行 i
  • Xcode - 发布和分发配置中的 Malloc_Error

    仅当我在设备上选择发布或分发配置时 我才会收到此错误 在模拟器上它运行良好 请问 我错在哪里 cc1obj 4113 malloc mmap size 429379584 failed error code 12 error can t a
  • 使用 JSONKit 解析 JSON 文件

    我正在构建一个音叉应用程序 货叉应允许最多 12 个预设节距 此外 我希望允许用户选择一个主题 每个主题都会加载一组预设 不必使用所有预设 我的配置文件看起来像这样 theme A3 comment An octave below conc
  • iOS 上关键 ClientState 警告的默认访问速度缓慢

    在测试我的 iOS 应用程序时 我收到 对关键 ClientState 的默认访问速度慢 耗时 0 034635 秒 容差为 0 020000 警告 它似乎是间歇性发生的 我试图环顾四周看看它是关于什么的 但我并不完全确定 任何帮助表示赞赏
  • iPhone 的翻译器?

    我对为 iPhone 制作一个解释器很感兴趣 这将是一个实验性的想法 但可能会很棒 我喜欢让我自 己的语言适合移动计算和数学的想法 我查阅了很多资料 发现有关 iPhone 上的口译员的信息很复杂 苹果会允许什么 我见过这个应用程序 这是一
  • 从字典创建 Swift 对象

    如何根据 Swift 字典中的查找值动态实例化类型 希望这对其他人有用 我们需要进行一些研究才能弄清楚这一点 目标是避免巨大的 if 或 switch 语句从值创建每个对象类型的反模式 class NamedItem CustomStrin
  • 如何使用 didMoveToView 作为 initWithSize ?

    我将 Xcode 更新到版本 6 从那时起 我就无法使用以前在 Xcode 5 中使用 Objective C 编写的代码了 有一些新文件 GameScene h 和 GameScene m 以及 GameScene sks 而不是 MyS
  • Grand Central Dispatch (GCD) 调度源标志

    我最近不再使用 to GCD 调度来源 https developer apple com documentation dispatch 1385630 dispatch source create监视文件更改 效果很好 API 也变得更加
  • iOS - 在相机上放置自定义叠加层(垂直对齐)。顶部黑条的大小

    我正在寻找以下问题的编程解决方案 我想在相机 iOS 上绘制自定义叠加层 我希望它位于相机输出视图的垂直中央 我已经完成了相对于屏幕而不是相机图片居中绘制自定义视图 为此 我需要获得顶部黑条的大小 我怎么才能得到它 顶部和底部栏的大小不相等
  • iOS绘图3D图形库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在搜索一个可以帮助我绘制 3D 图表的库 我想要类似的东西这一页 http www math uri edu bkaskosz fla
  • 使用未声明的类型“对象”

    这太奇怪了 通常我可以理解未声明的类 但这是声称 Object 类本身未声明 NSObject 可以工作 但我的项目设置方式我需要它是一个纯 Swift 对象 我的类标题如下所示 import UIKit import Foundation
  • 找不到 Cocoa/Cocoa.h 文件

    我在用XMPPFramework在我的应用程序中 我已将 Cocoa Cocoa h 导入到我的 m 文件中 但是当我构建项目时Xcode显示错误 错误 未找到 Cocoa Cocoa h 文件 我该如何解决这个错误 如果您正在为 iOS
  • Facebook 登录打开错误的应用程序

    我正在尝试使用 facebook 实现应用程序的登录 但每次我尝试登录时 它都建议打开错误的应用程序 我尝试了一些在这里找到的东西 但没有成功 在 Facebook 的开发者页面上我添加了一个后缀 我的 plist 如下 有谁知道发生了什么
  • iOS 目标 c 中的 AES/CBC/PKCS5Padding 结果与 Android 不同

    我在 Android 应用程序中使用 AES CBC PKCS5Padding 代码就像 private static String TRANSFORMATION AES CBC PKCS5Padding private static St
  • iOS 中是否需要 Google App Indexing SDK 才能使用 Google DeepLinking?

    我想用谷歌应用程序索引与我的网页和 iOS 应用程序 我支持通用链接 or 深层链接用谷歌术语 与苹果Search并相应地设置我的网页 From 谷歌文档 https developers google com app indexing i

随机推荐

  • 从 Chrome 中打开的
    元素中删除蓝色边框?

    我正在升级我的网站以使用新的 HTML5details元素以获得更好的可访问性 一切正常 但不幸的是 当我单击打开元素时 Chrome 应用了丑陋的蓝色边框 有什么办法可以阻止 Chrome 这样做吗 我看不到任何显式的 CSS 样式被应用
  • 如何使用 apache POI 在 ms word doc 中使用 rowspan 和 colspan 创建表?

    我正在使用 APACHE POI 创建包含表的 Word 文档 表格如下所示 我想创建具有行跨度和列跨度的单元格 如图所示 可以使用 APACHE POI 吗 有没有其他java库可以实现同样的功能 任何帮助表示赞赏 你可以试试这个 pub
  • 在 Android 4.0.3 中插入​​错误 SqLite [重复]

    这个问题在这里已经有答案了 我的 Android 4 0 3v 平板电脑出现 Sqlite 问题 Error 07 28 14 28 18 495 6995 7125 com titan tablet E AndroidRuntime FA
  • 检测Python函数中的所有全局变量?

    我正在尝试分析一些混乱的代码 这些代码恰好在函数中大量使用全局变量 我正在尝试重构代码 以便函数仅使用局部变量 有没有办法检测函数内的全局变量 例如 def f x x x 1 z x y return z 这里的全局变量是y因为它不是作为
  • android活动截图如何?

    你好朋友我正在制作一个带有 webview 的应用程序 我想截取我的活动截图 目前我正在使用此代码来捕获图像 public Bitmap takeScreenshot View rootView findViewById android R
  • MySQLi 无法准备语句

    我在脚本中运行两个查询room php 两者都使用MySQLi准备好的语句 其代码如下 Get room name stmt mysqli gt prepare SELECT name FROM rooms WHERE r id stmt
  • 如何在Android中使用SmsManager发送具有自定义线程ID的短信?

    我想创建一条带有自定义线程 ID 例如 10001 的 SMS 我怎样才能做到这一点 原因是因为我需要实现删除短信功能 而删除特定短信线程的唯一方法是通过线程 ID 或电话号码 而此时获取电话号码并不完全可能 因此需要定义自定义线程 ID在
  • 如何处理应采用 https 保护的网站中的混合内容?

    我正在服务器 A 上构建一个网站 已注册域名 用于人们创建和运行他们的 应用程序 这些 应用程序 实际上是运行在服务器B上的docker容器 在容器中 有一个可以直接访问的小型Web应用程序 如下所示 http IP ADDR OF SER
  • 如何计算两个加权样本之间的 Kolmogorov-Smirnov 统计量

    假设我们有两个样本data1 and data2以及各自的权重weight1 and weight2我们想要计算两个加权样本之间的 Kolmogorov Smirnov 统计量 我们在 python 中执行此操作的方式如下 import n
  • 在 Yii 框架中包含 CSS、javascript 文件

    如何在 Yii 框架中包含 Javascript 或 CSS 文件 我想在我的网站上创建一个运行一些 Javascript 应用程序的页面 所以我想包括 js and css特定视图中的文件 像这样的事情
  • 使用另一个数组作为输入对数组进行排序[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我想使用下
  • 谷歌电子表格根据其他值查找单元格

    我们正在尝试使用它 我将作为参考 我试图让单元格 X4 显示 A 列中相对于单元格 X3 中显示的 B 列最大值的数据 即在撰写本文时 最大值列为 27 这是由 Purelycraft 完成的 所以我希望它使用公式自动显示名称 Purely
  • 在其他应用程序窗口上创建按钮

    我编写了下面的代码来在计算器上创建一个额外的按钮 但该按钮不显示 var Object1 TButton Hand THandle begin Hand FindWindow CalcFrame Calculator Object1 TBu
  • 如何在 OS X 上全局设置 java 系统属性?

    短篇故事 我需要一种系统级方法来设置java awt headless财产给true 对于所有 java 调用 也就是说 使用 Djava awt headless true不是一个选项 因为 java 是从我无权访问的地方调用的 例如 从
  • 如何将树枝中的两个字符串组合在一起?

    我想做这样的事情 set c a b Where a and b是字符串 我该怎么做 做法是 set c a b
  • 隐藏 Nativescript-Angular TabView 上的选项卡按钮

    我正在尝试找到一种方法来使用 Angular 6 应用程序删除元素上的选项卡按钮 但到目前为止没有效果 基本上 我只想保留选项卡内容及其滑动功能 显然 您可以使用特定的 Android 和 iOS 方法 但我不确定如何做到这一点
  • 如何判断 NSTimer 是否处于活动状态?

    我有一个类似这样的计时器 NSTimer timer NSTimer scheduledTimerWithTimeInterval 1 0 target self selector selector updateCountdown user
  • 使用 jax-ws 生成存根失败

    我正在尝试使用 jax ws 为 WSO2 Identity Server 管理服务生成存根https xx xx xx xx 9447 services RemoteUserStoreManagerService wsdl https x
  • bash > 重定向是原子的吗?

    我的 crontab 工作有一个奇怪的问题 我的 crontab 作业执行以下操作 program gt file 然而有时文件会充满我 无法解释的随机数据 我想知道是否可能是之前的 crontab 作业需要更长的时间来运行 并且它以某种方
  • 如何从 SKScene 呈现 UIViewController?

    我通过 Sprite Kit 进入 iOS 我认为这是不明智的 我的目标是在游戏结束时显示 分享 按钮 点击分享按钮应该会出现一个 SLComposeViewController Twitter 分享 场景的内容不应改变 决定 游戏结束 的