有没有办法为所有UIViewControllers
实现功能?
我试图扩展所有UIViewControllers的特定行为,非常标准。
例如:
MyBaseClass
class MyBaseClass {
public func load(viewController:UIViewController){
print("The size of the view is \(viewController.view.size.width)")
}
}
我必须在100 UIViewController
答案 0 :(得分:1)
一种方法是将协议与UIViewController
的扩展名结合使用。
将您的行为定义为协议并扩展UIViewController
以实现它:
protocol WidthProtocol {
func showWidth()
}
extension UIViewController: WidthProtocol {
func showWidth() {
print("The width of the view is \(self.view.frame.size.width)")
}
}
一旦你有了这个,你可以从UIViewController
的任何子类调用你的函数,例如:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Show the width
showWidth()
}
}
答案 1 :(得分:1)
或者,如果您不想在所有视图控制器中调用相同的函数,则可以将其子类化:
class YourCustomViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("The size of the view is \(view.frame.width)")
}
}
然后只需UIViewController
替换YourCustomViewController
:
class oneOfYour100Controler : UIViewController {
这样的事情:
class oneOfYour100Controler : YourCustomViewController {
然后您不需要做任何事情,邮件将自动打印。