Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 更改视图控制器Swift_Iphone_Swift - Fatal编程技术网

Iphone 更改视图控制器Swift

Iphone 更改视图控制器Swift,iphone,swift,Iphone,Swift,我有个问题。我想在swift中更改视图控制器 这是我代码的一部分: if success == "1" { NSLog("Login SUCCESS"); var prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults() prefs.setObject(mobile, forKey: "USERNAME") prefs.setInteger(1, forKey: "ISLOGGEDIN")

我有个问题。我想在swift中更改视图控制器

这是我代码的一部分:

if success == "1" {
    NSLog("Login SUCCESS");

    var prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
    prefs.setObject(mobile, forKey: "USERNAME")
    prefs.setInteger(1, forKey: "ISLOGGEDIN")
    prefs.synchronize()

    self.presentViewController(OtpVC(), animated: true, completion: nil)
}
我的OtpVC文件是:

class OtpVC: UIViewController {
    @IBOutlet weak var smsfield: UITextField!

    @IBAction func continueButton(sender: AnyObject) {
    }



    }
现在的问题是,当登录成功时,页面会发生变化,并变为黑色


我怎样才能解决这个问题?提前感谢。

您也可以使用segues

设置从一个视图控制器到要在情节提要中移动的视图控制器的顺序。 还可以在故事板中设置序列的标识符

现在使用下面的代码

self.performSegueWithIdentifier("identifier", sender: self)
使用上面的代码行,您将以编程方式创建一个新的
OtpVC
实例。如果这是您想要的,并且视图控制器的编码正确,可以像那样初始化,那么这不是问题。
但是因为它都是黑色的,我假设你已经在故事板中创建了
OtpVC
,所以你要么需要使用Sukhdeep Singh Kalla建议的segue,要么用以下方法实例化它:

let destination = storyboard?.instantiateViewControllerWithIdentifier("identifier") as! OtpVC
presentViewController(destination, animated: true, completion: nil)
这两个选项都需要设置一个标识符


要为后者设置标识符,请转到情节提要并单击视图控制器。通过单击视图控制器顶部的左黄色按钮,确保已选择视图控制器。然后在identity inspector中,键入标识符名称,并用该名称替换示例中的“identifier”。

空白页面表示您的视图未加载。看来情况就是这样:

请仔细看看,您正在创建该类的实例,但没有实例化该类的视图

在swift中,您可以使用影响视图中多个视图的单个类 故事板

正确的方法应该是:

if success == "1" {
 NSLog("Login SUCCESS");

 var prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
 prefs.setObject(mobile, forKey: "USERNAME")
 prefs.setInteger(1, forKey: "ISLOGGEDIN")
 prefs.synchronize()

 var storyboard = UIStoryboard(name: "Main", bundle: nil)
这里的“Main”应该是OtpVC视图所在的情节提要的名称

这里的“OtpVC”应该是视图的情节提要标识符

更新:

另一个根本原因可能是您的标识符在故事板上设置得不好

在您的身份检查器中设置应类似于:

模块中,好像我的目标没有这样的课程,它说

这可能是你想看看的东西。也许在故事板中,您引用的是其他目标,而不是具有此类
OptVC
类实现的目标


你的问题到底出在哪里?可能是因为他以编程方式创建了
OtpVC
,而它应该通过故事板进行实例化。我创建了一个名为OtpVC的swift文件,在故事板中,我将class=OtpVCi放在故事板中无法实现。。我只能用鼠标左键拖动按钮有一个错误,它说:UIStoryboard没有名为MainstryBoard的成员对不起,我使用了我自己的代码。。让我来解决这个问题。已修复。应用程序崩溃:由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合密钥txtUsername的键值编码。”此错误指向何处?是否正确设置了视图控制器?当我点击“注册”按钮时,它会在if语句中工作,该语句表示登录是正确的,而不是我的problem@VaultDesign我很乐意帮忙!,请投票选出所有你认为有用的答案。。。而且,这始终会让人们保持积极性,并在将来更有可能回答您的问题;-)
if success == "1" {
 NSLog("Login SUCCESS");

 var prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
 prefs.setObject(mobile, forKey: "USERNAME")
 prefs.setInteger(1, forKey: "ISLOGGEDIN")
 prefs.synchronize()

 var storyboard = UIStoryboard(name: "Main", bundle: nil)
 var controller = storyboard.instantiateViewControllerWithIdentifier("OtpVC") as! OtpVC
 self.presentViewController(controller, animated: true, completion: nil)

}