我已经创建了一个自定义的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!)
}
答案 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
。