【问题标题】:Show a View Controller Programmatically in Swift error在 Swift 错误中以编程方式显示视图控制器
【发布时间】:2015-04-17 23:19:02
【问题描述】:

我试过this solution,但我得到一个错误AnyObject 不能转换为'UIViewController' 你是说使用'as!'强制低调?

我做错了什么?

我在 LoginViewController viewDidLoad 中调用以下代码,我检查用户是否已登录,如果是,那么我想跳过登录视图并直接转到最新照片,即 FirstViewController...

override func viewDidLoad() {
    super.viewDidLoad()

    if(defaults.objectForKey("loggedIn") != nil){
        let vc : UIViewController = self.storyboard?.instantiateViewControllerWithIdentifier("LatestPhotosView") as! UIViewController;
        self.presentViewController(vc, animated: true, completion: nil)
    }

}

【问题讨论】:

  • 可以添加指向外部资源的链接,但如果您在问题中包含您遇到问题的代码会更好。

标签: ios swift


【解决方案1】:

从 Swift 1.2 开始,您必须显式转换,将您的 as 更改为 as!

这向程序员表明强制转换可能会失败。这会降低代码出错的可能性。

编辑:

您必须在您的 viewDidAppear: 方法中调用它,因为这将在您的 viewDidLoad() 上失败(您的视图尚不存在)

【讨论】:

  • 好的,现在我在运行时得到这个 警告:尝试在 上显示 ,其视图不在窗口层次结构中!
  • @TonyMorello 我需要更多代码,请编辑您的问题以包含更多内容。你在哪里调用这些方法?
  • @wrwim 好的...如果我必须在视图上调用它确实出现了,我可以触发已经存在的 segue...除了我不希望登录屏幕显示之外,这项工作完美无缺根本没有,当视图出现时它会显示半秒钟......有没有办法阻止它?
  • 如果您想跳过视图控制器,您必须查看加载该视图的位置,并更改那里的代码。如果您想跳过初始视图控制器,则必须从 AppDelegate 手动加载它,如下所示:window = UIWindow(frame: UIScreen.mainScreen().bounds); window.rootViewController = ...; window.makeKeyAndVisible()
猜你喜欢
  • 1970-01-01
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-16
相关资源
最近更新 更多