如果用户已登录,请更改ViewController

时间:2018-01-06 22:23:30

标签: ios swift

有这样的代码,如果用户登录 - 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中我看到视图元素,只是背景颜色是默认值。

我做错了什么。谢谢大家。

1 个答案:

答案 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)
相关问题