У меня есть следующий метод init, который работал отлично до Swift 1.2.Должен вызывать назначенный инициализатор суперкласса «UIViewController» в Swift 1.2
init(items: NSArray, views: NSArray, showPageControl: Bool, navBarBackground: UIColor){
super.init()
В Swift 1.2 строку с super.init() вызывает ошибку:
Must call a designated initializer of the superclass 'UIViewController'
Проблема заключается в том, что у меня есть только два возможных супер инициализации методы для вызова одной с codec
, а другой с a nib
. У меня обоих нет доступа к этому методу init.
См. Полный класс here строка ошибки this.
Как исправить метод init, чтобы он работал с Swift 1.2?
class SLPagingViewSwift: UIViewController, UIScrollViewDelegate {
init(items: NSArray, views: NSArray, showPageControl: Bool, navBarBackground: UIColor){
super.init()
needToShowPageControl = showPageControl
navigationBarView.backgroundColor = navBarBackground
isUserInteraction = true
var i: Int = 0
for item in items{
if item.isKindOfClass(UIView.classForCoder()){
var v = item as UIView
var vSize: CGSize = v.isKindOfClass(UILabel.classForCoder()) ? self.getLabelSize(v as UILabel) : v.frame.size
var originX = (self.SCREENSIZE.width/2.0 - vSize.width/2.0) + CGFloat(i * 100)
v.frame = CGRectMake(originX, 8, vSize.width, vSize.height)
v.tag = i
var tap = UITapGestureRecognizer(target: self, action: "tapOnHeader:")
v.addGestureRecognizer(tap)
v.userInteractionEnabled = true
self.navigationBarView.addSubview(v)
self.navItems.addObject(v)
i++
}
}
if (views.count > 0){
var controllerKeys = NSMutableArray()
i = 0
for controller in views{
if controller.isKindOfClass(UIView.classForCoder()){
var ctr = controller as UIView
ctr.tag = i
controllerKeys.addObject(NSNumber(integer: i))
}
else if controller.isKindOfClass(UIViewController.classForCoder()){
var ctr = controller as UIViewController
ctr.view.tag = i
controllerKeys.addObject(NSNumber(integer: i))
}
i++
}
if controllerKeys.count == views.count {
self.viewControllers = NSDictionary(objects: views, forKeys: controllerKeys)
}
else{
var exc = NSException(name: "View Controllers error", reason: "Some objects in viewControllers are not kind of UIViewController!", userInfo: nil)
exc.raise()
}
}
}
}
Это для SLPagingViewSwift? Я обновил super.init() до super.init (nibName: nil, bundle: nil) –