如何在 iOS Swift 3 的 View Controller 中创建扩展文件并调用它?
Posted
技术标签:
【中文标题】如何在 iOS Swift 3 的 View Controller 中创建扩展文件并调用它?【英文标题】:How to create extension file and call it in View Controller in iOS Swift 3? 【发布时间】:2017-01-28 08:59:53 【问题描述】:我做了这样的扩展文件:
import Foundation
import Swift
import UIKit
extension UIButton
func sayHello()
print("Hello bro...")
然后像这样在视图控制器中调用 sayHello 方法:
override func viewDidLoad()
super.viewDidLoad()
sayHello()
但是显示这个错误:
我认为这个问题是由于在视图控制器中铁导入扩展文件造成的。 请帮帮我。 谢谢。
【问题讨论】:
您正在扩展中创建实例方法并试图调用类方法 要么您需要在func
之前添加class
关键字,要么您需要将扩展名从UIButton
更改为UIViewController
【参考方案1】:
你的实现是错误的。您正在创建 UIButton 的扩展并在 UIViewController
上调用方法。
extension UIViewController
func sayHello()
print("Hello bro...")
如果你想创建一个UIButton
扩展
extension UIButton
func sayHello()
print("Hello bro...")
那么您需要像下面这样在UIButton
上调用它
let button = UIButton()
button.sayHello()
【讨论】:
@LeoDabus 更新了我的答案。【参考方案2】:使用extension UIViewController
不使用UIButton
下面的代码扩展了 UIButton
someButton.sayHello() 有效
extension UIButton
func sayHello()
print("Hello bro...")
如果你想在 UIViewController 的 viewDidLoad()
中使用扩展 UIViewController 而不是 UIButton
extension UIViewController
func sayHello()
print("Hello bro...")
它适用于“viewDidLoad”
这是呼叫警报的一些示例扩展
例如)
extension UIViewController
func alert(title: String, message: String)
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
alertController.view.tintColor = .black
let someAction = UIAlertAction(title: "Some", style: .default, handler: nil)
//let alertController.addAction(someAction)
alertController.addAction(someAction)
self.present(alertController, animated: true, completion: nil)
【讨论】:
以上是关于如何在 iOS Swift 3 的 View Controller 中创建扩展文件并调用它?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS Swift 中显示库中的实时照片视频并在 Collection-View 中显示?
iOS swift:Deinit一个孩子View Controller