通知视图的公共功能

时间:2016-03-11 08:20:58

标签: ios swift

我已经创建了一个自定义的NotificationView,我几乎在每个viewController中都使用它,这意味着我在所有viewControllers中都有以下功能。有没有办法只把它放在一个,所以它不会重复很多次?

变量

var notification:SFSwiftNotification?
var notificationFrame:CGRect?

功能

func setUpNotification() {
    //Notification Setup
    notificationFrame = CGRectMake(0, 0, CGRectGetMaxX(self.view.frame), 64)
    notification = SFSwiftNotification(frame: notificationFrame!,
        title: nil,
        image: "Error",
        animationType: AnimationType.AnimationTypeCollision,
        direction: Direction.TopToBottom, delegate: self)
    notification!.backgroundColor = UIColor.whiteColor()
    notification!.label.textColor = UIColor.blackColor().colorWithAlphaComponent(0.6)
    UIApplication.sharedApplication().keyWindow!.addSubview(notification!)
}

2 个答案:

答案 0 :(得分:0)

您可以创建一个UIViewController,在其中实现您的func,并从该根控制器继承所有控制器。

如果您有UITableViewController

YourViewController : RootVC <UITableViewDataSource, UITableViewDelegate>

别忘了编写委托方法,并在视图中添加UITableView

答案 1 :(得分:0)

你可以使用extension,这听起来就像是一个对象的扩展。因此,如果您为UIViewController创建扩展,那么从UIViewController继承的所有对象都将能够使用此扩展。因此,您创建一个如下所示的.swift文件:

var notification:SFSwiftNotification?
var notificationFrame:CGRect?

extension UIViewController: SFSwiftNotificationProtocol  {


        func setUpNotification() {
        //Notification Setup
        notificationFrame = CGRectMake(0, 0, CGRectGetMaxX(self.view.frame), 64)
        notification = SFSwiftNotification(frame: notificationFrame!,
            title: nil,
            image: "Error",
            animationType: AnimationType.AnimationTypeCollision,
            direction: Direction.TopToBottom, delegate: self)
        notification!.backgroundColor = UIColor.whiteColor()
        notification!.label.textColor = UIColor.blackColor().colorWithAlphaComponent(0.6)
        UIApplication.sharedApplication().keyWindow!.addSubview(notification!)
        }
}

在所有ViewControllers中,您现在可以执行:self.setUpNotification()

修改

SFSwiftNotificationProtocol中添加了extension UIViewController: SFSwiftNotificationProtocol