在我的项目中有一个自定义选项卡,它位于应用程序的每个屏幕上,所以我做了自定义UIView
类和xib
文件,并在其中添加了按钮。现在我希望我的按钮在不同的屏幕上导航有不同的story board
ID。但我不能从UIView
类调用presentViewController
。以前我在extension
类中自定义函数以在屏幕之间导航,但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
}
}
4条答案
按热度按时间vohkndzv1#
在按钮上调用此函数
此函数将创建根视图控制器
上述代码必须工作,它在Swift 4.0中对我有效
gv8xihay2#
可以使用delegate。将其添加到Tab类中
在使用Tab的viewController中,如下设置委托
然后在delegate方法中推送新的viewController,你可以创建一个BaseViewController来完成这个操作,然后所有的viewController子类都可以有相同的特性。
ezykj2lf3#
在这个类中添加一个属性,然后你就可以使用控制器的方法了。
弱变量控制器:UIViewController!
自我控制器?.presentViewController(vc,动画:真,完成:无)
x3naxklr4#
您可以使用
window
来表示您的UIView Class
中的任何ViewController
。在您的UIView
中,只需写入以下行。干杯!