我有一个在每个UIViewController上都很常用的函数
func backPreviousScreen() {
self.navigationController?.popViewControllerAnimated(true)
}
无论如何我不必在每个UIViewController上写上面的函数?只需要一些方法,比如我可以继承它,并在所有UIViewController中使用它?
答案 0 :(得分:3)
您可以创建协议并为其添加扩展名:
protocol Dismissable {
}
extension Dismissable where Self: UIViewController {
func backPreviousScreen() {
self.navigationController?.popViewControllerAnimated(true)
}
}
现在只需使用此协议标记视图控制器类,您就可以开始使用了:
class MyViewController: UIViewController, Dismissable {
}
答案 1 :(得分:1)
使用其中的方法创建一个BaseViewController,然后所有的viewcontrollers都可以继承它,因此都具有该函数
答案 2 :(得分:0)
创建UINavigationController
扩展名,而不是创建基类方法。您可以在应用程序中的任何位置使用它。
import UIKit
import Foundation
extension UINavigationController
{
func backPreviousScreen (){
self.popViewControllerAnimated(true)
}
}
使用如下self.navigationController.backPreviousScreen()
答案 3 :(得分:0)
使用协议的想法很好,但我建议你只创建一个名为BaseViewController的类,它可以像这样扩展UIViewController
[super backPreviousScreen];
然后你可以在任何其他类似的控制器中使用它
[super.someTextField setText:@"Some Text"];
这是你可以放置你想要的函数,对象和所有东西,然后调用
$ dig communikate.equalitytime.co.uk
;; ANSWER SECTION:
communikate.equalitytime.co.uk. 14307 IN A 208.97.187.158
来自任何子类的
我建议使用此方法而不是协议,因为这样您甚至可以轻松创建出口,因为故事板和笔尖识别基类并让您创建出口,以后可以使用
{{1}}