我如何快速更新其他控制器的用户界面?

2024-01-23

我的应用程序中有几个控制器。当我的应用程序调用一个控制器中的一个函数时,我想更新其他控制器的 UI。我怎样才能做到这一点?

class FirstViewController: UIViewController {
    func updateUI {...}  
}

class SecondViewController: UIViewController {
    func updateUI {...}  
}

class ThirdViewController: UIViewController{
    func updateAllUI {...} # I want call FirstViewController().updateUI() and SecondViewController().updateUI() here
}

但是 FirstViewController() 意味着我创建了一个我不想要的新 FirstViewController,并且 FirstViewController 已经被创建了。那么我如何在 updateAllUI() 中调用所有其他控制器的 updateUI()

请帮忙,谢谢!


让视图控制器直接通信通常是一种非常糟糕的做法。我会用一个NSNotification在视图控制器之间进行通信。按照惯例,通知名称以大写字母开头,以“通知”一词结尾。

class FirstViewController: UIViewController {
    func updateUI {...}  

    override func viewDidLoad() {
        super.viewDidLoad()
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "updateUI", name:"TimeToUpdateTheUINotificaiton", object: nil)
    }

    override deinit {
        NSNotificationCenter.defaultCenter().removeObserver(self)
}
}

class SecondViewController: UIViewController {
    func updateUI {...}  

    override func viewDidLoad() {
        super.viewDidLoad()
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "updateUI", name:"TimeToUpdateTheUINotificaiton", object: nil)
    }

    override deinit {
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }
}



class ThirdViewController: UIViewController{

    func updateAllUI {
        NSNotificationCenter.defaultCenter().postNotificationName("TimeToUpdateTheUINotificaiton", object: nil)
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何快速更新其他控制器的用户界面? 的相关文章

  • 如何在 SwiftUI 中仅使用 ForEach 而不是列表来滑动删除

    我正在 SwiftUI 中使用 ForEach 制作自定义列表 我的目标是进行滑动删除手势 而不是将 ForEach 嵌入到列表中 到目前为止 这是我的代码 import SwiftUI struct ContentView View le
  • 如何在 Core Data 中存储图像?

    只是猜测 我创建一个属性并将其类型设置为 二进制 但最终我该如何使用它呢 我猜幕后有一个 NSData 那么该属性实际上采用 NSData 吗 这个问题已经被问过很多次了 答案有点复杂 当涉及二进制数据时 您应该根据要使用的数据的预期大小来
  • 确定 SceneKit 中 SKVideoNode 的视频大小/长宽比

    如何从 AVPlayer 获取视频的视频大小来设置节点的几何大小 例如 我有一个具有宽度和高度的 SCNPlane let planeGeo SCNPlane width 5 height 5 所以现在我实例化我的视频播放器 let vid
  • 使用完成处理程序在 Swift 中调用连续动画

    我正在制作一个可以显示化学反应动画的应用程序 每个原子都是一个 SCNSphere 并通过 SCNActions 进行动画处理 我尝试使用 runAction 中的完成处理程序在当前操作完成后调用下一个动画 因为每个原子必须做出很多不同的运
  • 带操作按钮的颤动本地通知

    我在我的 flutter 项目中尝试了 flutter 本地通知插件 它在简单通知上工作正常 但我需要带有操作按钮的通知功能 请帮助我或建议我实现此功能 不幸的是 flutter local notifications 插件尚不支持操作按钮
  • 从“NSPercientStoreResult”转换为不相关类型“Entity”总是失败

    我正在创建一个小应用程序来学习 CoreData 中的多对多关系 但是 使用下面的代码 从 NSFetchResult 到实体类 Groepering 的转换出现错误 与我的项目相比 我在互联网上找到的示例没有看到任何差异 为什么转换仍然失
  • GeoFire Swift 3 - 保存和更新坐标

    我正在尝试使用 GeoFire 将坐标存储到 Firebase 数据库中 我不确定如何更新新坐标 因为它们每秒都会更改 更新 随着childByAutoId 它正在为每辆自行车生成一个新的唯一 ID 如何引用这个唯一的自行车 ID 例如 用
  • 是否可以使用 Firebase 安排推送通知? [复制]

    这个问题在这里已经有答案了 我已经阅读了我能找到的所有文档 但仍然不知道这是否可行 如果我是用户 我可以安排特定时间的推送通知吗 Example 1 我是用户并打开应用程序 2 我允许通知并转到 pickerView 或其他任何内容 并设置
  • 在 Swift 中从 UIScrollView 创建 PDF 文件

    我想从 UIScrollView 的内容创建一个 PDF 文件 func createPdfFromView aView UIView saveToDocumentsWithFileName fileName String let pdfD
  • 更改组织以使用 Xcode 9 在 iTunes Connect 上上传二进制文件

    我在 Xcode9 上配置了多个团队 当我尝试将二进制文件上传到 Xcode 9 上的 iTunes Connect 时 没有更改团队的选项 并且出现以下错误 ERROR ITMS 4088 来自苹果开发者论坛的解决方案 1 正常存档2 窗
  • Firebase 身份验证问题 - 通过电子邮件地址检查用户是否存在

    我在 Firebase 上创建了一个帐户 它有效 但现在我想阻止人们使用已存在的电子邮件地址创建帐户 这是代码 DatabaseManager shared userExists with email completion weak sel
  • 减少 CoreData 的调试输出?

    我正在开发一个使用 CoreData 的 iOS macOS 项目 它工作正常 但它会向控制台输出大量调试信息 这使得控制台无法使用 因为我的打印语句隐藏在所有与 CoreData 相关的内容中 我有一个非常简单的 CoreData 设置
  • 在 iOS 中,如何创建一个始终位于所有其他视图控制器之上的按钮?

    无论是否呈现模态或用户执行任何类型的转场 有没有办法让按钮在整个应用程序中 始终位于顶部 而不是屏幕顶部 有什么方法可以让这个按钮可拖动并可捕捉到屏幕上吗 我正在以苹果自己的辅助触摸作为此类按钮的示例 您可以通过创建自己的子类来做到这一点U
  • 在 iPhone 中缝合图片

    我想并排缝合2张png 在Cocoa中 我会使用 NSImage initWithSize 然后只是drawInRect 但是 UIImage 没有 initWithSize 类 我现在该怎么做 Use UIGraphicsBeginIma
  • 如何将 ios7 通用应用程序升级到基于 Xcode 6 的通用故事板应用程序?

    我目前有一个基于 xcode 5 ios 7 的通用应用程序 因此有两个故事板 我正在考虑将其更新到 ios 8 有没有办法 最佳方法将两个故事板迁移到通用的单个故事板 我在 xcode 6 中看不到转换选项 None
  • 水平 UICollectionView 单行布局

    我正在尝试使用以下命令设置简单的水平布局UICollectionView 兜圈子却没有达到预期的结果 所以任何指针或例子将不胜感激 我粘贴经常更改的代码但没有成功可能没什么意义 该图像显示两行 第一行是单个项目 尺寸正确并且在中心正确对齐
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个
  • SwiftUI:发送电子邮件

    在正常情况下UIViewController在 Swift 中 我使用此代码发送邮件 let mailComposeViewController configuredMailComposeViewController mailCompose
  • 在发生更改事件时将货币格式重新应用到 UITextField

    我正在使用一个包含本地化货币值的 UITextField 我看过很多关于如何使用此功能的帖子 但我的问题是 如何在每次按键后将货币格式重新应用到 UITextField 我知道我可以通过以下方式设置和使用货币格式化程序 NSNumberFo
  • 在 UIScrollview 上显示缩略图的最佳方法是什么(从服务器下载)

    我想在 UIScrollview 如照片应用程序 上显示许多图像 作为缩略图 所有图像将从服务器下载 据我所知 有几种选择 1 通过创建 UIImageviews 然后将它们添加为主滚动视图上的子视图 2 通过子类化一个UIView类 然后

随机推荐

  • 关于C++中const指针的问题?

    我无法解释以下代码 double d 100 double const d1 30 double const p d Line 1 double const p1 d1 Line 2 在上面的代码中 Line 1没问题 但是Line 2产生
  • JPA 单表层次结构中的 PostgreSQL 标识

    在具有单个表继承层次结构的 Hibernate JPA 环境中使用 PostgreSQL 时 我看到了奇怪的行为 首先是我的环境 PostgreSQL 8 3 春季2 5 6SEC01 Hibernate entitymanager 3 4
  • 具有 json 模式的 Kafka jdbc 接收器连接器无法正常工作

    使用最新的 kafka 和 confluence jdbc 接收器连接器 发送一条非常简单的 Json 消息 schema type struct fields type int optional false field id type s
  • 每 1 分钟定期调用一次 AWS Lambda

    我如何定期调用 AWS Lambda 特别是每 1 分钟一次 当前功能允许 Lambdas 设置为5分钟触发 https stackoverflow com a 27382253 358013 但我正在寻找更短的时间间隔 我想过永远运行 L
  • phpass 返回不同的结果

    我只是将我的项目从本地主机放到我的主机上 并使用相同的 phpass 函数 我收到不同的结果 并且返回的字符串的长度也不同 顺便说一句 一切都在本地主机上运行 所以在线时相同的函数返回 false 我想知道可能是什么问题 结果如下 Inpu
  • 如何在 Javascript/Angular JS 中进行舍入——但删除无关紧要的数字

    我的 Javascript 控制器中有以下语句 scope myList 0 1 0 5 0 6666666 我的 AngularJS 模板包含以下行 div i div 这会产生以下 HTML 输出 div 0 div div 1 div
  • JavaFX 一次运行大量倒计时器?

    所以我可以看到几种不同的方法来完成我需要的事情 并且我已经做了很多谷歌 堆栈溢出搜索 但找不到我真正想要的东西 我需要运行多个 倒计时器 我需要在不同时间同时运行大约 6 个 可能最多 10 个 倒计时器 我的主程序上有一个选项卡窗格 我在
  • 强制分配实内存

    是否可以分配大块实内存 512Mb 1Gb 安装了 4Gb 而不将其丢弃到交换区 我的最终目的是释放系统内存 当可用内存接近 0 时 os x 会出现问题 它不会努力将未使用的内存放入交换区 并且尝试获取内存时一切都会变得非常慢 所以 我决
  • PrimeNg 上下文菜单传递数据问题

    我正在使用 PrimeNg 的上下文菜单 v6 0 1 问题是文档不清楚 我也无法在网上找到有关如何将数据传递给命令函数的信息 例如 我在屏幕上渲染了 10 个对象 并且上下文菜单附加到所有这些对象 现在如果我单击菜单项 我想获取渲染上下文
  • Laravel 分页链接与渲染

    我已经使用 Laravel 5 x 几个月了 我只是想知道使用分页时使用链接和渲染之间有什么区别 我做了一些研究 人们以相同的方式使用这两者 假设我有一个从控制器返回的数组变量 我会将分页切成每个视图 5 个项目 public functi
  • PowerShell 脚本不会作为 Windows 计划任务执行

    我有一个 PowerShell 脚本 可以运行 在 Windows 任务计划程序中 我创建了一个要执行的新任务 C Windows System32 WindowsPowerShell v1 0 powershell exe 将参数作为我的
  • mysql 触发器不工作?

    我正在尝试创建一个触发器来根据另一个表上的插入有条件地插入新行 我似乎无法确定语法 到目前为止 这是我所拥有的 DELIMETER CREATE TRIGGER overPricedCar AFTER INSERT ON cars FOR
  • 无法获取Android广告ID

    我正在尝试获取 Android 广告 Id 但找不到正确的方法 事实上 我什至无法获取广告 ID 提供商 isAdvertisingIdProviderAvailable 始终返回 false 我使用的是带有 8 0 PlayStore 的
  • 什么是 Microsoft.Practices.EnterpriseLibrary.Data

    我想知道什么Microsoft Practices EnterpriseLibrary Data dll是以及为什么我们使用这个组件 这个dll有什么好处呢 我想在 3 层架构上创建一个项目 并且很好奇执行 sql 查询的最佳方法是什么 我
  • 使用C++11随机库生成随机数

    正如标题所示 我正在尝试找出一种使用新的 C 11 生成随机数的方法
  • Android:Deviceready 5 秒后尚未触发

    将 Cordova 更新到 v6 4 0 并将 Android 平台更新到 6 0 0 后 我的应用程序不再运行 我得到这个 deviceready has not fired after 5 seconds cordova js 1223
  • NDK/Java项目中的Eclipse CDT C/C++代码补全问题

    我有一个 Android Java 项目 其中包含一些本机 C C 代码 我需要它能够在各种 C 类和函数上完成代码 然而 包含 完整 源代码来源的选项似乎在 Android Java 项目中不可用 有谁知道一种方法 1 欺骗 Eclips
  • 带有 Google 服务帐户主题的generate_access_token()

    在 python 中 我尝试通过服务帐户调用 GMail API委派全域权限 https developers google com identity protocols oauth2 service account authorizing
  • 检索具有 CLSID 的组件的 COM 类工厂错误:8000401a

    从上次开始 我多次收到以下错误 因为我正在使用 Microsoft Word dll 创建 Word 文件 并将其进一步附加到邮件中 Server Error in Application Retrieving the COM class
  • 我如何快速更新其他控制器的用户界面?

    我的应用程序中有几个控制器 当我的应用程序调用一个控制器中的一个函数时 我想更新其他控制器的 UI 我怎样才能做到这一点 class FirstViewController UIViewController func updateUI cl