有这样的代码,如果用户登录 - ViewController更改:
func ifLogged() {
let preferences = UserDefaults.standard
let token = "token"
if preferences.object(forKey: token) == nil {
// Doesn't exist and stop at the same viewController
} else {
let newViewController = GeneralChooser()
self.navigationController?.pushViewController(newViewController, animated: false)
// push new generalChooser when logged
}
}
但在这种情况下,我看不到视图元素,只看到ViewHelper类的背景颜色
class GeneralChooser: UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
ViewHelper.BackGroundColor(view: self.view)
下面有BackgroundColor函数
class func BackGroundColor(view: UIView){
let startColor = UIColor(red:0.15, green:0.50, blue:0.70, alpha:1.0)
let endColor = UIColor(red:0.58, green:0.65, blue:0.81, alpha:1.0)
let newLayer = CAGradientLayer()
newLayer.colors = [startColor.cgColor,endColor.cgColor]
newLayer.zPosition = -1
newLayer.frame = view.frame
view.layer.addSublayer(newLayer)
如果我不在GeneralChooser
类中调用此函数,则屏幕为黑色且没有视图元素,但在初始ViewController中我看到视图元素,只是背景颜色是默认值。
我做错了什么。谢谢大家。
答案 0 :(得分:1)
问题出在这一行
let newViewController = GeneralChooser()
此行不加载xib或引用与该类关联的storyboard对象
使用 instantiateViewController 并在storyboard中提供viewController故事板ID说 GeneralChooserView
let vc = self.storyboard?.instantiateViewController(withIdentifier:"GeneralChooserView")
self.navigationController?.pushViewController(vc!, animated: true)
或者如果你使用带有GeneralChooser的xib作为GeneralChooser类的xib文件
let vc = GeneralChooser(nibName: "GeneralChooser", bundle: nil)
self.navigationController?.pushViewController(vc, animated: true)