在没有新初始化的情况下使用类中的数据

2023-12-23

我有一个 TabBar 布局,在“主页”选项卡中我有一个“连接”按钮,按下该按钮时会向 TransferViewController 类发送一个操作以创建 GameKit 会话。然后我有另一个名为“发送”的选项卡,其中有一个按钮,上面写着“发送文件”,按下该按钮时,会向 TransferViewController 类发送一个操作,该类还使用使用 connect 设置的“会话”变量来发送文件,但因为它是不同的它创建了一个新的控制器实例,并希望我再次连接,但该按钮位于“主页”选项卡上。

无论如何,我可以在没有两个实例的情况下为两个选项卡使用一个控制器吗?我希望用户单击“主页”选项卡上的“连接”,然后切换到“发送”选项卡,然后按“发送文件”并使用另一个选项卡上的连接设置的变量。如果这令人困惑,我很抱歉。


这一点也不令人困惑——事实上,这种情况一直都会出现。在模型-视图-控制器系统中的工作方式是,您设置一个模型类,使其成为单例,并在需要共享数据的所有控制器中添加对该单例的引用。

Model.h

@interface Model : NSObject
@property (nonatomic, readwrite) Session *session;
-(id)init;
+(Model*)instance;
@end

Model.m

@implementation Model
@synthesize isMultiplayer;

-(id)init {
    if(self=[super init]) {
        self.session = ...; // Get the session
    }
    return self;
}

+(Model*)instance {
    static dispatch_once_t once;
    static Model *sharedInstance;
    dispatch_once(&once, ^{
        sharedInstance = [[self alloc] init];
    });
    return sharedInstance;
}
@end

现在您可以在控制器代码中使用共享会话: import"Model.h", 和写

[[Model instance].session connect];
[[Model instance].session sendAction:myAction];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在没有新初始化的情况下使用类中的数据 的相关文章

  • MFMailComposeViewController 立即关闭

    情况是 MFMailComposeViewController 将被呈现 我看到它已经完成了一半 但后来就被驳回了 这是错误 serviceViewControllerReady 错误 错误域 UIViewServiceInterfaceE
  • 快速以编程方式打开 viewController

    我想通过代码在按钮上打开新的 UIViewController 我已经在故事板中制作了控制器 只想链接它 而且我不想使用 XIB 接口或 nibName 要打开新视图控制器 您需要在按钮单击事件中写入以下行 self performSegu
  • iOS 9.3.2 破坏 MPMusicPlayerController

    我正在尝试将 Apple Music 集成到我的应用程序中 直到今天早上我才设法使其完美运行 更新到 iOS 9 3 2 后 一切都不一样了 权限系统的工作原理相同 SK云服务控制器 https developer apple com li
  • 在 Swift 2.0 中以横向模式使用 UIImagePickerController

    我正在编写一个仅限 LandScape 的 iPad 应用程序 我需要从库中拍照以发送数据库 但图像上传屏幕仅适用于纵向模式 如何将其更改为横向模式 我读过一些关于 UIPickerControllerDelegate 不支持横向模式的内容
  • uiscrollview 放大和缩小无法正常工作

    我有一个 uiscrollview 里面有一个 uiimageview 我希望用户能够放大图像 因为它是一个大图像 滚动视图只需要垂直滚动而不是水平滚动 在添加缩放效果之前 我有以下代码并且它按我想要的方式工作 void viewDidLo
  • 自定义选项卡栏上的“更多”菜单

    我在我的应用程序上使用选项卡栏 UITabBarController 我希望自定义单击 更多 按钮时出现的表格的外观 我已经研究出如何通过设置来更改更多屏幕上导航栏的外观 self moreNavigationController navi
  • Objective-C 内存管理:发布时崩溃

    我是 Objective C 的新手 似乎无法正确理解内存管理代码 我有以下代码 Media myMedia self myMediaManager getNextMedia self navigationItem title self m
  • 如何使用break语句停止内部和外部循环[重复]

    这个问题在这里已经有答案了 我使用的代码非常简单break内部循环 for int it 0 it lt 5 it for int it2 0 it2 lt 5 it2 if it2 2 break break here not it2 b
  • 预填充 UICollectionView 单元重用队列

    问题 我有一个应用程序 只有一个UICollectionView我第一次滚动它时很卡顿 我已将来源范围缩小到正在创建新单元格 2 的事实 使用initWithFrame 因为周围没有可以重复使用的细胞 初始滚动后 重用队列不为空 单元格可以
  • 如何让 iPhone 屏幕变暗

    我的 iPhone 屏幕上有一个刷新按钮 可以刷新当前视图中的表格 屏幕刷新得很漂亮 但是有没有办法让屏幕变暗 然后在表格刷新后再次变亮 您可以在要调暗的视图上放置一个带有黑色背景的非不透明视图 默认情况下 其 alpha 值为 0 因此是
  • 如何使 UITableView 可重新排列?

    我正在尝试使我的 UITableView 可编辑 以便您可以移动单元格 现在 当我单击编辑按钮时 它只允许我删除 但不能重新排列 我有的方法有 Code BOOL tableView UITableView tableView canEdi
  • UIBarButtonItem 按下后更改字体,在外观代理中指定

    我设置了UIBarButtonItem标题字体通过appearanceAppDelegate 中的代理 UIBarButtonItem appearance setTitleTextAttributes NSDictionary dicti
  • 在 iPhone 上搜索 PDF

    经过两天尝试使用 Quartz 从 PDF 中读取注释后 我成功做到了并且发布我的代码 https stackoverflow com questions 4080373 get pdf hyperlinks on ios with qua
  • UITableView 在单元格刷新时滚动到顶部

    我有一个 UITableView 其中一个单元格的大小是动态调整的 以适应其中的 UITextView 每当键入一个键时 单元格都会检查计算出的高度是否增加 就像换行符一样 因此它可以告诉表单元格的高度需要重新计算 我用这段代码做到了这一点
  • searchDisplayController 在 iOS 8 中已弃用

    如何更正以下内容以免出现警告 我缺少什么 修正时searchResultsController to searchController它给了我一个错误 找不到对象 if tableView self searchDisplayControl
  • 符号化 iPad 崩溃日志后回溯仍然不可读

    我有这些崩溃日志 在我将它们放入管理器中后 会自动进行符号化 但结果始终相同 iOS 调用得到符号化 而我的应用程序调用则没有 我尝试将 Dym 和应用程序文件复制到同一文件夹中 删除并再次复制回来 没有任何帮助 知道发生了什么事吗 所以我
  • 如何在 SceneKit 中以编程方式将 png 纹理包裹在立方体周围

    我是 SceneKit 的新手 试图让一些基本的东西工作 但到目前为止还没有取得多大成功 由于某种原因 当我尝试将 png 纹理应用于 CNBox 时 我最终除了黑色之外什么也没有 这是我在 viewDidLoad 中的简单代码片段 let
  • TestFlight Beta 中的消息不可用

    I am seeing Unavailable message in TestFLight Beta App in iOS8 Please find the attached screenshot please tell me how to
  • 获取在 iOS UIFont 中追踪字符的路径

    假设我在 iOS 应用程序中使用了自定义字体 Foo 我已将其添加到我的项目 plist 等中 并且我能够渲染UILabels之类的就很好了 现在 如果我想找出可以 追踪 该字体中的字母 P 的点序列 我将如何获得该点序列 例如 假设我想使
  • 如何缩放曼德尔布罗集

    我已经成功实现了维基百科文章中所述的曼德尔布罗集 但我不知道如何放大特定部分 这是我正在使用的代码 void createSetWithWidth int width Height int height Thing void int int

随机推荐

  • 键盘隐藏 Android WebView 上的输入字段

    在我的 Android 应用程序上 我有一个 Activity 其布局几乎是 WebView 元素 在此 WebView 中 我正在加载在线表单以供用户填写 但是 底部输入字段 文本框 保留在软键盘后面 用户无法填写它们 对于这种情况有哪些
  • iPhone 更改应用程序名称

    我正在尝试在 iTunes Connect 中更改我的应用程序名称以进行应用程序更新 我没有看到该选项 这仍然可能吗 或者苹果是否删除了此功能 你绝对可以做到 它位于版本详细信息页面上的应用程序本地化下 您需要单击此处的编辑 然后您可以更改
  • python 类变量在 __init__ 中更改时可以成为实例变量吗?

    据我所理解var is a 类变量 here class MyClass var hello def init self print self var 那是一个实例变量 class MyClass def init self var sel
  • setThemingColor 仅适用于叶节点 dbId

    从文档看来 您应该能够使用任何 dbId 调用 setThemingColor 但它似乎只有在您传递的 id 是叶节点时才有效 它是否正确 还有什么方法可以批量调用此方法 或者一次只能调用一个叶节点 我想将 dbId 数组传递到该方法中 是
  • 左偏和右偏?

    我读过一篇关于部分统一 http eed3si9n com herding cats partial unification html作者提到了左偏和右偏数据类型 有人可以向我解释一下吗 左偏和右偏数据类型 与什么有关系功能1 Is Eit
  • Flutter:popAndPushNamed 参数传递到新页面?

    我正在 Flutter 上编写一个应用程序 我需要执行 popAndPushNamed 但我还需要将参数传递给我正在推送的页面 我能怎么做 是否有另一种方式来弹出和推送 或者我必须寻找不同的解决方案 这件事让我发疯 提前致谢 为了将数据发送
  • 自动解除 JQuery 中事件处理程序的绑定

    是否可以对 JQuery 说 嘿 在添加此事件处理程序之前取消绑定任何事件处理程序 而不显式调用 unbind 就像是 jq selector click function true 其中 true 表示我想取消绑定设置到该元素的所有单击处
  • Ansible自动为用户生成随机密码

    我正在尝试创建将创建用户列表的剧本 但是 我还想为每个用户生成随机密码 生成密码后 我希望在剧本文件旁边有一个包含 username new generated pa ssword 键值的文本文件 是否可以在不开发新模块的情况下做到这一点
  • 如何从 Windows 8 应用程序访问 SQL Server?

    我意识到我的 Windows 8 应用程序无法访问本地 SQL Server 实例 相反 我在 Azure 中有一个 SQL Server 在 SQL Server Management Studio 中 我只需更改查询字符串并像其他数据库
  • SVN - 拒绝、更改和恢复到以前的版本

    我们有一个有几个用户的 SVN 存储库 一名用户意外删除了一个目录并签入了更改 我可以直接签出旧版本并重新签入 但我不想丢失 SVN 中目录的版本信息 我如何拒绝更改 如果您使用命令行 典型的方法是进行 反向合并 例如 如果版本 125 是
  • SAS 无效“闰年”日期问题 yymmdd8

    我正在阅读一些原始数据 其中有几个错误的日期 具体来说 有人在非闰年键入了 2 月 29 日 例如 data null input test yymmdd8 format test date9 cards 20270229 run 客户希望
  • Android 的浮动窗口与 FLAG_SHOW_WHEN_LOCKED 结合失败

    我的应用程序在锁定屏幕之前向用户显示一个对话框 这是一个包含 DialogFragment 的简单 Activity 来自支持库 因为该应用程序在 2 2 上运行 由于显示这些对话框的实际活动不是 Android 标准的浮动窗口 getWi
  • (java.lang.String) 无法应用于 (java.lang.Object)

    我有一个名为的监听器类TopicS我试图从一个名为 readMessages 的 gui 中调用它 当我尝试使用以下方法运行 TopicS 类时 private void jButton1ActionPerformed java awt e
  • FFMPEG 抽屉式滤波器。十六进制颜色结果与输入值不匹配

    我正在尝试使用使用特定十六进制颜色输入的绘图盒过滤器创建边框 但是我得到的结果与我设置的值不匹配 考虑以下生成 600x600 样本的代码 ffmpeg i 0 jpg vf drawbox x 0 y 0 w 600 h 600 colo
  • Visual Studio SSDT 数据库项目 (.sqlproj) 构建 - 使用 CLI 生成 .dacpac,无需 MSBUILD (msbuild.exe)

    看起来好像dotnet CLI根据以下内容 不支持数据库项目 sqlproj https github com dotnet sdk issues 8546 https github com dotnet sdk issues 8546 就
  • 如何在 SQL 中解码 XML 实体?

    如何转换 解码文本 1594 1604 1575 1605 1581 1587 1610 1606 格式为普通文本 我正在使用 SQL Server 2012 我只想将它们全部更新为普通文本 由于某种原因 Jeroen 的答案似乎在 SQL
  • libGDX(Android 和 iOS 项目)中是否有推送通知的方法?

    有人知道是否可以使用 RoboVM libGDX 项目在 Android 和 iOS 中添加推送通知 如 Amazon Simple Notification Service 如果可能的话 是否有任何好的教程或好的提示如何实现这些事情 我会
  • 矩阵乘法 Prolog

    我在网上找到了 Prolog 中矩阵乘法的代码 有使用Prolog经验的人可以给我解释一下吗 SWI Prolog has transpose 2 in its clpfd library use module library clpfd
  • 如何在C# winforms中调用表单上多个文本框控件的Text_Changed事件

    我的表格大约有 20 个TextBox控制 我想开火Text Changed事件 而无需为每个单独的文本框添加事件 有没有办法循环遍历文本框来触发此事件 我想做的是在文本更改时清除标签控件 对于错误描述 我使用标签控件来显示消息 而不是显示
  • 在没有新初始化的情况下使用类中的数据

    我有一个 TabBar 布局 在 主页 选项卡中我有一个 连接 按钮 按下该按钮时会向 TransferViewController 类发送一个操作以创建 GameKit 会话 然后我有另一个名为 发送 的选项卡 其中有一个按钮 上面写着