В моем проекте есть настраиваемая вкладка, которая есть на каждом экране приложения, поэтому я создал собственный класс UIView и файл xib и добавил в них кнопки. Теперь я хочу, чтобы мои кнопки для навигации на разных экранах имели разные идентификаторы раскадровки. Но я не могу вызвать PresentViewController из класса UIView. Раньше я настроил функцию в классе расширения для навигации между экранами, но класс UIView также не мог вызвать эту функцию.
import UIKit
@IBDesignable class tab: UIView {
var view: UIView!
@IBAction func btn1(sender: UIButton) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("6")
self.presentViewController(vc, animated: true, completion: nil)
}
override init(frame: CGRect) {
super.init(frame: frame)
xibSetup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
xibSetup()
}
func xibSetup() {
view = loadViewFromNib()
view.frame = bounds
view.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight]
addSubview(view)
}
func loadViewFromNib() -> UIView {
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: "tab", bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
return view
}
}
Подробнее здесь: https://stackoverflow.com/questions/346 ... view-class