子类中是否有符合自定义协议的常规空白函数?

2024-01-28

我的应用程序中有两个主屏幕,目前两者都只是UIViewController。这两个视图控制器非常相似 - 它们都实现了我的自定义子类UIView called HeaderView负责显示信息并接受用户输入。就目前而言,这段代码是重复的,因为HeaderView两个视图控制器的设置是相同的 - 唯一的区别是当用户确认文本输入时会发生什么HeaderView.

为了减少重复代码,我创建了一个名为InputViewController(的子类UIViewController),它包含两个相同的视图控制器的各个方面。最终,我希望这两个视图控制器进行子类化InputViewController代替UIViewController.

class InputViewController: UIViewController, InputProtocol {

    private let headerView = HeaderView()
        
    override func viewDidLoad() {
        super.viewDidLoad()
        // layout, etc.
        setupCallbacks()
    }
    
    internal func setupCallbacks() {
        headerView.onUpdate = { (text: String) in
            // called when user confirms text entry in headerView
            self.onHeaderUpdate()
        }
    }
    
    internal func onHeaderUpdate() {} // Blank function
    
}

setupCallbacks() and onHeaderUpdate()是协议中定义的方法InputViewController符合.这HeaderView实现一个回调闭包,该闭包在setupCallbacks() by headerView.onUpdate...

该协议InputViewController符合:

protocol InputProtocol {
    func setupCallbacks()
    func onHeaderUpdate()
}

To illustrate this, I drew up a diagram; diagram

因为我想要的子类InputViewController覆盖onHeaderUpdate()方法,传统上是留下定义onHeaderUpdate() in InputViewController空白还是有其他解决方案?


保留 的定义是否符合惯例onHeaderUpdate() in InputViewController blank

是的,这就是所谓的抽象方法。通常会给它故意崩溃的代码,以此表达“我的存在只是为了在子类中被重写”。

(我应该进一步说,您正在创建的,一个执行所有子类必须实现的初始配置的基本视图控制器,也是正常的。)

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

子类中是否有符合自定义协议的常规空白函数? 的相关文章

  • Swift 3:绘制矩形

    我刚接触 swift 三天 我正在尝试弄清楚如何绘制矩形 我对这门语言太陌生 不知道要扩展的类和要重写的方法 并且我四处寻找示例代码 但似乎没有任何效果 我将其归因于我对 swift 3 的使用 我现在正在尝试的是 import UIKit
  • Swift 中的协议与多态性

    我对面向对象编程相当陌生 我正在尝试了解协议 委托和多态性 我最近观看了一个培训视频 其中宣传当您有两个相似且具有相似方法实现的类时 协议是优雅地实现此目的的最佳解决方案 这就说得通了 然而 一些额外的研究让我发现了多态性 听起来这也是一种
  • 如何向选项卡栏控制器添加“入口点箭头”?

    In Xcode 6 2 beta I am able to make some view controllers such as View Controller or Navigation view controller the entr
  • 使用随机初始密钥解码字典

    我正在接收并尝试解析包含事件数据的 json 文件 它是一个字典的字典 其组织方式如下 其中每个事件的键都是随机事件 id 19374176 122 event title Cool Fun Thing to Do description
  • 我可以/如何确定设备是否有振动?

    我有一些设置可以启用 禁用某些操作的振动 但我发现如果设备没有振动能力 则显示它们毫无意义 有没有办法检查用户是否正在使用 iPod touch 以及它是否有振动 我不确定除了进行模型检查之外还有其他方法可以做到这一点 这可能不是一个很好的
  • iOS游戏大小问题[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我开发了一款 iOS 通用游戏 我想
  • iOS11视觉框架映射所有人脸特征点

    我正在使用视觉框架并使用以下代码获取所有里程碑点 if let allFaceLandmarks landmarks allPoints print allFaceLandmarks 但无法找到这些点的映射 例如右眼的索引号 寻找相同的东西
  • 以编程方式设置 UITextField 占位符颜色

    如何在 swift 中以编程方式设置 UITextField 占位符颜色 1 创建一个具有所需颜色的 AttributedString 2 将此 AttributedString 设置为文本字段 attributePlaceholder 属
  • iOS:适用于 iOS 的基于 Flash 的编程应用程序?

    我想知道 有没有办法支持 iOS 的基于 Flash 的编程应用程序 它可以是本机 混合或网络应用程序 我想知道 是否有可能为 iOS 设备开发基于 Flash 的应用程序 我看过论坛 到处都说这是不可能的 所以只想在开始任何开发之前确认一
  • dyld:未找到符号:___NSDictionary0__ 在 XCode 7 和 iOS 目标 9.0 中使用带有发现文档的 google ServiceGenerator 二进制文件时

    我正在尝试使用 Google 从 Google 后端生成客户端 API 代码serviceGenerator以发现文档作为输入 以下是确切的命令 Users raja Library Developer Xcode DerivedData
  • 如何获取 iTunes connect 团队 ID 和团队名称?

    我正在写下一个Appfile for fastlane 我的问题是我已经有了team name and team id在 Apple 开发中心 但我无法获取iTunes Connect ID itc team id 我正在与不同的团队合作
  • iOS 8 上的 NSRangeException

    我将 XCode 5 升级到 6 以便在 iPhone 6 和 6 Plus 上测试我的项目 但在启动时遇到了神秘的崩溃 NSArrayM objectAtIndex index 4 beyond bounds 0 3 First thro
  • 调试-iphonesimulator/YogaKit/YogaKit.modulemap' 未找到

    我在react native中创建了新项目 我正在尝试在xcode中构建 但出现了致命错误 致命错误 模块映射文件 Users gis00109 Library Developer Xcode DerivedData sam capwmdo
  • 如何检查dispatch_async块是否已完成运行

    所以基本上我需要能够在块完成运行后运行 segue 我有一个块可以执行一些 JSON 操作 我需要知道它何时完成运行 我有一个队列 我称之为 json queue jsonQueue dispatch queue create com ja
  • 如何禁用 ARCoachingOverlayView 的自动激活?

    我正在添加一个ARCoachingOverlayView to my ARView像这样 let coachingOverlayTemp ARCoachingOverlayView coachingOverlayTemp delegate
  • NSString cString 已弃用。还有什么选择呢?

    我还有一个新手问题 我编写了一段代码 将 NSString 转换为 NSMutableData 以模拟 webService 结果 然而事实证明 cString 已被弃用 你能帮我更换它吗 这是我的代码 NSString testXMLDa
  • 动态获取协议的字符串表示形式

    我正在寻找一种从协议类型动态获取协议名称的方法 而不必使用 objc协议声明中的属性 我知道这有效 func keyForProtocol aProtocol Protocol gt String return NSStringFromPr
  • 针对架构 armv7 的 iOS 链接器错误的 Google 转化跟踪

    我正在尝试将 iOS 版 Google 转化跟踪功能添加到我的 iPhone 应用程序中 该应用程序的基础 SDK 是 iOS6 该应用程序的有效架构是armv7 armv7s 该应用程序的 iOS 部署目标是 4 3 我正在使用最新的 x
  • 如何从 Xcode 中导航栏上的后退按钮中删除文本?

    我通过在应用程序委托中添加以下代码来将箭头自定义图像设置为导航栏 它可以工作 但现在我希望完全删除后退按钮的文本 UIImage backButtonImage UIImage imageNamed BackButtonGrey png b
  • 还有比这更好的方法在通知附件中使用 Assets.xcassets 中的图像吗?

    我想将 Assets xcassets 中的图像附加到通知中 我已经寻找解决方案大约一个小时了 这似乎是执行此操作的唯一方法 func createLocalUrl forImageNamed name String gt URL let

随机推荐

  • 访问 Service Fabric 中的文件系统

    当我从服务总线队列收到新消息时 我需要在 Service Fabric 服务中使用 ffmpeg 对视频进行编码 我可以从资源中提取 ffmpeg exe 并运行它 但我可以将输入 输出视频文件保存在内部文件系统中吗 我通过以下代码在本地集
  • 用于监视下载文件夹添加内容的批处理文件

    我需要一个批处理文件来监视 下载 文件夹中的添加内容 但仅限于新添加的内容 像这样的事情 START NumOldFiles GetNumberOfFilesOld Delay 30 Seconds NumNewFiles GetNumbe
  • ec2 API 如何决定哪个可用区?

    我正在编写一项服务 该服务可以根据需要以编程方式启动 EC2 实例 我想给它最好的机会能够随时启动实例 最大限度地减少由于容量不足而导致的失败 实例在一个区域内的哪个可用区中运行并不重要 重要的是我有最好的机会启动实例 我想知道 如果我在使
  • 什么正则表达式模式将匹配包含某些字符的整个单词?

    我想匹配包含某些字母 字符的整个单词 例如 该模式将匹配包含该字母的所有单词l and a 例如car patrol left等等 但它不会匹配这样的词boom turnover digit etc 像这样的模式应该有效 b w al w
  • Java中多项式x^16 + x^12 + x^5 + 1计算CCITT标准CRC

    我需要帮助在 Java 中使用多项式 x 16 x 12 x 5 1 0x1081 计算 CCITT 标准 CRC 我在互联网上尝试了很多示例 但每个示例都返回与示例中不同的值 例如 对于此数组 0xFC 05 11 结果需要为 27 56
  • Android:有什么好的解决方案如何验证编辑框

    例如 我想要验证最小长度 如果是Email a PhoneNumber 这在安卓中怎么可能 我想验证一下 如果您想阻止用户输入某些内容 请扩展InputFilter并将其注册到您的EditText built in InputFilter
  • 如何使用 TWGL(WebGL 辅助库)绘制 2D 图像

    有很多关于如何使用 TWGL 绘制 3D 内容的示例https github com greggman twgl js tree master examples https github com greggman twgl js tree
  • 在c中对二维数组进行排序

    我正在尝试对二维数组进行排序 原始数组是 5 0 3 4 1 2 3 1 1 4 2 2 3 3 1 排序后 应该是这样的 3 1 1 3 3 1 4 2 2 4 1 2 5 0 3 这是我用来尝试实现冒泡排序的代码 i 代表行数 int
  • JMeter 3.2 中不存在 SOAP/XML-RPC Sampler

    我有点惊讶我的 JMeter 3 1 脚本在 3 2 中不起作用 JMeter 3 2 中删除 SOAP XML RPC Sampler 的原因是什么 是否存在一些性能问题等 这是 JMeter 的一部分change http jmeter
  • 在 Windows 窗体应用程序中托管 ASP.NET Core API

    背景 我正在开发一个涉及 WinForms 应用程序的项目 客户端希望公开一个仅限本地的 HTTP 服务器 以允许其他应用程序通过 REST API 或类似 API 触发正在运行的 WinForms 应用程序实例上的功能 首选是使用 ASP
  • UIWebview、iOS 中的视频自动播放

    例如我有网址https www youtube com watch v c2ccXwwmcnA 如果我将此 URL 传递给UIWebView它会自动play视频 我尝试过以下方法 Option 1 property weak nonatom
  • 使用 for 循环初始化 C 结构

    我正在创建一个质量中心程序 并试图对其进行概括 它最多仅适用于 3D 使用具有 3D 和质量元素的结构 类型对象的变量数量 我希望由用户而不是我来定义 但我找不到使用循环创建变量的方法 也许有不同的方法可以做到这一点 但我只是不知道 这是我
  • Seam/JSF 表单提交触发按钮 onclick 事件

    我有一个带有查询生成器的搜索表单 构建器通过按钮激活 像这样的东西
  • std::vector 是否满足 Boost.Interprocess 分配器的容器要求?

    In boost interprocess文档称容器存储在共享内存中的要求 STL容器可能不会假设用分配器分配的内存可以用相同类型的其他分配器释放 仅当一个对象分配的内存可以与另一个对象一起释放时 所有分配器对象才必须比较相等 并且只能使用
  • Scala 中如何省略匹配词?

    在Scala中 你可以这样做 list filter item gt item match case Some foo gt foo bar gt 0 但您也可以通过省略来实现更快的方法match list filter case Some
  • Printf 即使它不应该

    我有 if 语句的这一部分 并且得到了奇怪的输出 int x 10 if 1 lt x lt 5 printf F n 为什么它打印 F 从逻辑上讲 if 语句不是假的 因为 x 大于 1 但不小于 5 在 C 语言中 你不能像这样链接比较
  • Twitter Bootstrap Carousel 插件能否在幻灯片过渡时淡入淡出

    我在我正在开发的网站上有一个非常基本的 Twitter Bootstrap Carousel 插件实现 http furnitureroadshow com http furnitureroadshow com 我只是想知道是否有人扩展了轮
  • std::sort 崩溃 - 没有严格弱排序的排序

    我正在尝试对项目向量进行排序 正如代码注释中提到的 顺序应该是 具有更多行动点的参与者 mAp 先走 当出现平局时 具有相同倾向的参与者 mDisposition 作为战斗的发起者 mBattleInitiator 先走 以下代码 简化示例
  • MongoError:'$push'中的美元($)前缀字段'$push'对于存储无效

    我在尝试着upsert数据集到 Mongo 集合 The intended document may or may not exist 如果确实存在 它将在嵌入文档 zip 中至少包含一项 并且应附加到该文档而不是覆盖它 如果不存在 则应将
  • 子类中是否有符合自定义协议的常规空白函数?

    我的应用程序中有两个主屏幕 目前两者都只是UIViewController 这两个视图控制器非常相似 它们都实现了我的自定义子类UIView called HeaderView负责显示信息并接受用户输入 就目前而言 这段代码是重复的 因为H