UIViewController 实例问题
Posted
技术标签:
【中文标题】UIViewController 实例问题【英文标题】:UIViewController instance issue 【发布时间】:2016-05-13 05:46:00 【问题描述】:我正在尝试在单独的 swift 文件 (Login.swift) 上设置 NSUserDefaults 变量以确定我的用户是否已登录。如果用户确实已登录,则 LoginViewController 将消失,而 HomeViewController 将显示。但是我被抛出了这个错误
在“UIViewController”类型上使用实例成员“dismissViewControllerAnimated”;您的意思是改用“UIViewController”类型的值吗?
这是我的代码
//success
else if value["username"] != nil && value["password"] == nil && value["message"] == nil
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn")
LoginViewController.dismissViewControllerAnimated(true, completion:nil)
if let api_key = value["api_token"].string
print("The token is " + api_key)
else
print("error parsing api token")
//pass data to Users class
_ = Users.init(Name: value["name"].string, Email: value["email"].string, Id: value["id"].int, ProfilePicture: value["profile_picture"].string, Username: value["username"].string)
【问题讨论】:
dismissViewControllerAnimated 是和对象方法,为什么你用类名来调用它..? 【参考方案1】:创建 LoginViewController 的对象。 使用该对象然后调用dismissViewControllerAnimated 函数。 不允许从类名直接调用
【讨论】:
【参考方案2】:dismissViewControllerAnimated
它的 Instance
方法不是 class
方法。看起来你是在上课打电话。
如果你在同一个控制器上使用:
[topVC dismissViewControllerAnimated:YES completion:nil];
或
如果您不在该控制器中,请使用
UIViewController *topVC = [UIApplication sharedApplication].keyWindow.rootViewController.presentedViewController;
[topVC dismissViewControllerAnimated:YES completion:nil];
【讨论】:
以上是关于UIViewController 实例问题的主要内容,如果未能解决你的问题,请参考以下文章
为啥 UIPopoverController 不是 UIViewController 的子类?
以编程方式向 UIView 或 UIViewController 添加约束?
Interface Builder 是如何知道 UIViewController 的视图的?
如何在不使用 Nib 的情况下实例化和调用 UIView 子类