在每个UIVIewController上重用功能

时间:2016-07-14 08:07:14

标签: ios objective-c swift

我有一个在每个UIViewController上都很常用的函数

func backPreviousScreen() {
    self.navigationController?.popViewControllerAnimated(true)
}

无论如何我不必在每个UIViewController上写上面的函数?只需要一些方法,比如我可以继承它,并在所有UIViewController中使用它?

4 个答案:

答案 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}}