supportedInterfaceOrientations 方法不会重写其超类中的任何方法

2024-05-29

在 UIViewController 中,这段代码:

public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    if let mainController = self.mainViewController{
        return mainController.supportedInterfaceOrientations
    }
    return UIInterfaceOrientationMask.all
}

给出错误Method doesn't override any method from its superclass

我使用的是 Xcode 8 beta 4,iOS 部署目标是 9.0,并且Use Legacy Swift Language Version在中设置为否Build Settings

如何将上面的代码转换为 Swift 3?


像这样:

override var supportedInterfaceOrientations : UIInterfaceOrientationMask {

...剩下的就按你所拥有的那样。

一般模式

许多 Cocoa 方法现在都是属性,因此您可以将它们实现为覆盖计算变量。因此,从种子 3(或更早)移动到种子 4 的模式是:

  • Change func to var

  • Delete ()

  • Change -> to :

这是可行的,因为计算变量有一个 getter 函数,因此您之前实现的函数只是变成了 getter 函数。这些是只读属性,因此您不需要设置器。

同样受影响的方法有preferredStatusBarStyle, prefersStatusBarHidden, shouldAutorotate, preferredInterfaceOrientationForPresentation,以及许多其他人。寻找UIKIT_DEFINE_AS_PROPERTIES在 Objective-C 头文件中。

影响

从长远来看,您还可以做出其他改变。例如,你can添加一个设置器(将您的实现分为get and set函数),因此您可以将您的实现转变为存储属性的外观。例如:

private var _orientations = UIInterfaceOrientationMask.portrait
override var supportedInterfaceOrientations : UIInterfaceOrientationMask {
    get { return self._orientations }
    set { self._orientations = newValue }
}

现在你的代码有办法设置这个值了。如果您在不同时间返回不同的值,这可能会使事情变得更加清晰。

进一步的技术说明

有趣的是,这个变化对现有的 Objective-C 代码没有直接影响,因为在 Objective-C 中,新的属性声明,@property(nonatomic, readonly) UIInterfaceOrientationMask supportedInterfaceOrientations;,用与之前相同的方法满足:

- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

原因是在 Objective-C 中,@property(readonly)只是承诺存在相应的 getter 方法,而这正是该方法的本质。但在 Swift 中,编写 Objective-C 属性的 getter 方法的方法是通过property,即通过实例变量。因此,只有 Swift 代码会受到更改的影响:您必须将方法重写为属性。

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

supportedInterfaceOrientations 方法不会重写其超类中的任何方法 的相关文章

  • 如何在iOS中将底部安全区域设置为XIB?

    我想打开自定义弹出视图 在 XIB 中设计 它从底部显示 但现在在 iPhoneX 模拟器中 它从屏幕底部显示 我想在安全区域打开弹出窗口 iPhone X 的结果 并且 XIB 布局有约束 简单来说解决方案 使用超级视图删除底部约束并将其
  • 为什么是!在 Swift 中称为“隐式”而不是“显式”解包可选?

    的名称 总是让我感到困惑 它被称为 隐式展开的可选 然而 其中隐含着什么呢 隐含的意思是 暗示但没有明确表达 但是 不添加 明确表达其目的 不添加一个 明确我们要实现的目标 在 Swift 中 尾随感叹号 有两种不同的使用方式 一种叫做强制
  • 为什么字符串加法需要这么长时间才能构建?

    我正在添加文本UIlabel 及其性能成本 我使用过构建时间分析器使用此链接 https stackoverflow com questions 43455325 swift build time too long when the con
  • Swift 性能:map() 和 reduce() 与 for 循环

    我正在用 Swift 编写一些性能关键的代码 在实现了我能想到的所有优化并在 Instruments 中对应用程序进行分析后 我开始意识到绝大多数 CPU 周期都花在执行map and reduce 对浮点数数组的操作 因此 为了看看会发生
  • 自定义 URL 方案

    如何处理自定义 URL 方案以允许一个应用程序定向到另一个应用程序 例如instagram user username someusername它通过用户名将用户直接引导至用户个人资料 我需要创建类似的东西 我已经结账了applicatio
  • 在没有按钮的 SwiftUI 中呈现新视图

    所以我想使用 SwiftUI 呈现一个新视图 而用户不必点击按钮 因为NavigationButton会用那个 这是一个例子 struct ContentView View var model Model var body some Vie
  • ASIHTTPRequest 登录页面

    我尝试制作一个 iPhone 应用程序 可以登录到使用 https 保护用户信息的 Web 应用程序 现在我陷入了登录页面 我不知道通过我的应用程序登录时如何检查用户网站中的真实帐户 即使我输入错误的帐户 我也只收到 200 的回复 这是我
  • AVAudioSessionManager availableInputs“未知为端口 iPhone 麦克风选择的数据源”

    我在控制台日志中注意到这个错误已经有一段时间了 虽然它不影响我的应用程序的执行 但我觉得它真的很烦人 于是 我开始追查这个错误是从哪里来的 事实证明 当我调用 availableInputs 时 NSArray inputs AVAudio
  • 有没有办法检查 iOS 设备是否锁定/解锁?

    我在我的应用程序中使用了 GPS 位置更新 我想检测 iOS 设备是否处于睡眠模式 以便我可以关闭 GPS 位置更新并优化电池使用 我已经在iOS 6中尝试过pausesLocationupdates 但它无法按预期工作 我想在设备进入睡眠
  • WGS84 iOS 上外部 GPS 数据的大地水准面高度高度偏移

    对于我正在编写的应用程序 我们将 IOS 设备与外部传感器连接起来 该传感器通过本地 WiFi 网络输出 GPS 数据 该数据以相对于海拔高度的 原始 格式出现 一般来说 所有 GPS 高度都需要应用与基于当前位置的 WGS84 大地水准面
  • iOS Facebook Like 按钮无法与 iOS 应用程序配合使用

    尝试将 Facebook Like 按钮添加到 iOS 应用程序中 按照网上的说明进行操作 发现一个问题 模拟器上没有安装 Facebook 应用程序 8 x 7 x 当按下 F Like 按钮时 我们会看到切换到 Facebook com
  • UniversalLink 不适用于 iOS 14 设备,但在模拟器上运行良好

    以下解决方案可以在模拟器上支持universalLink 我有一个支持 UniversalLink 的应用程序 用户单击网站中支持的链接 将导航到应用程序中的功能 但它无法在 iOS 14 beta 4 上运行 它不是打开应用程序 而是打开
  • iOS Facebook SDK 通过图搜索来搜索用户

    我是图形搜索新手 我想搜索具有电子邮件地址的用户 那可能吗 现在 我只知道如何使用他们的名字进行搜索 如下所示 https graph facebook com search q chandler de angelis type user
  • 钥匙串组访问权限可在我的现有应用程序之间共享数据

    我在 AppStore 上有很多 iOS 应用程序 现在 对于下一个版本的应用程序 我想为每个应用程序保留一段数据以在 KeyChain 中共享 据我所知 我需要在 Apple 的 KeychainItemWrapper 类中提供相同的 K
  • UIDatePicker 中的最小和最大日期

    我想从日期选择器中获取最小和最大日期 但最小日期应为当前日期的 18 最大日期应为当前日期的 100 假设当前年份是 2018 年 那么我想要最小日期 2000 年和最大日期 1918 年 到目前为止我所做的是 NSCalendar gre
  • 设置视图控制器根视图的外观代理

    使用 UIAppearance 时是否可以仅针对视图控制器的根视图 我想从我的应用程序委托中为所有控制器设置背景颜色 但只想定位视图控制器上的直接视图 谢谢 详细来说 每个 UIViewController 子类都有自己的 UIView 对
  • 如何将文本从文本字段发送到另一个视图控制器

    我正在制作一个应用程序 其行为类似于 iPhone 中的默认 Messages app 用户可以在其中编写短信UITextField点击 发送 按钮后 该值UITextField in ComposeViewController将被转移到表
  • VOIP 通知丢失或延迟

    我如何知道我的设备已被阻止接收 VoIP 通知 应用程序在接收 3 4 次后停止接收 VoIP 通知 据我了解 从 iOS 13 开始 VoIP 通知应报告给 CallKit 即使在向 CallKit 报告后 我仍然遇到收不到 VoIP 通
  • Xcode 版本编辑器 - 如何浏览更改?

    在 Xcode 4 和 5 的内置版本编辑器视图中 当它显示两个修订版之间的差异时 如何从一个更改跳转到另一个更改 我正在寻找类似 Araxis Merge 的 Cmd Down Cmd Up 快捷键的东西 如果您已经在版本编辑器中 在左侧
  • UpdatedTransactions(transactionState == .restored) 与 paymentQueueRestoreCompletedTransactionsFinished

    正如标题所描述的 实际有什么不同 如果我有这个 func paymentQueue queue SKPaymentQueue updatedTransactions transactions SKPaymentTransaction for

随机推荐