Ios 分配字符串并在文本字段中显示

Ios 分配字符串并在文本字段中显示,ios,swift,Ios,Swift,我有两种观点。 第一个视图是“ISBN”条码类型, 但对于通过摄像头自动填充ISBN, 我添加了一个按钮。 因此,当用户触摸按钮时,第二个视图在模式中显示 当检测到“ISBN”时, 第二种观点被驳回,并且 在第一种观点中, 文本字段填充第二视图中检测到的“ISBN” 我通常使用UILabel传递数据并显示结果。 但现在我得到如下错误 fatal error: unexpectedly found nil while unwrapping an Optional value 第一个视图的类是Up

我有两种观点。 第一个视图是“ISBN”条码类型, 但对于通过摄像头自动填充ISBN, 我添加了一个按钮。 因此,当用户触摸按钮时,第二个视图在模式中显示 当检测到“ISBN”时, 第二种观点被驳回,并且 在第一种观点中, 文本字段填充第二视图中检测到的“ISBN”

我通常使用
UILabel
传递数据并显示结果。 但现在我得到如下错误

fatal error: unexpectedly found nil while unwrapping an Optional value
第一个视图的类是UploadMain

import UIKit


class UploadMain: UIViewController {


var ISBNstring: String = ""


@IBOutlet weak var ISBN: UITextField!

override func viewDidLoad() {
}

@IBAction func scanBarcode(sender: AnyObject) {
    performSegueWithIdentifier("scanModal", sender: self)
}
}
二是扫描视图

class ScanView : UIViewController, AVCaptureMetadataOutputObjectsDelegate {

let session         : AVCaptureSession = AVCaptureSession()
var previewLayer    : AVCaptureVideoPreviewLayer!
var detectionString : String!

*****

if let UploadVC = self.storyboard?.instantiateViewControllerWithIdentifier("UploadMain") as? UploadMain {
UploadVC.ISBNstring = self.detectionString!
UploadVC.ISBN.text! = UploadVC.ISBNstring   // maybe error here                
}
这不是正确的方法。
您应该使用委托来传播更改。在这里使用NSUserDefault不是正确的选择,尽管这是一个简单的解决方案。

第二个是ScanView添加此视图

NSUserDefaults.standardUserDefaults().setObject( self.detectionString!, forKey: "ISBNtxt")
第一个视图的类是UploadMain

override func viewDidAppear(animated: Bool)
{
     if (NSUserDefaults.standardUserDefaults().objectForKey("ISBNtxt")) != nil
     {
          ISBN.text! = NSUserDefaults.standardUserDefaults().objectForKey("ISBNtxt") as! String
     }
}

绝对没有“这里可能有错误”的理由——Xcode告诉您错误发生的确切位置。但是你应该删除
还是在那一行。ISBN.text!=UploadMainUploadVC.ISBN.text!的viewDidLoad()中的ISBNstring//UploadVC.ISBNstring//从ScanView中删除,但UploadVC以模态方式显示。我在哪里添加的?上传vc.ISBN.text!=UploadMain中的UploadVC.ISBNstring?但您知道,在取消模式视图后,viewDidLoad()不会在UploadMain中重新加载。我已经尝试过类似的方法。在第二个视图(从第一个视图以模态方式显示)的第二个视图中,如果让UploadVC=self.storyboard?.instanceeviewControllerWithiIdentifier(“UploadMain”)作为?UploadMain{UploadVC.ISBNstring=self.detectionString!在UploadMain(firstView)UploadVC.ISBN.text!=UploadVC.ISBNStrings的viewDidLoad()中,但是您知道,在取消模式视图后,viewDidLoad()不会在第一个视图中重新加载,然后在ViewWillAspect()中尝试,每次Override func ViewWillAspect(动画:Bool)都会调用它{super.viewdiddemouse(animated)ISBN.text!=ISBNstring}我这样编码,没有错误,但看不到条形码您应该使用委托来传播更改谢谢它可以工作,但是有没有其他方法不使用NSUserDefault?
override func viewDidAppear(animated: Bool)
{
     if (NSUserDefaults.standardUserDefaults().objectForKey("ISBNtxt")) != nil
     {
          ISBN.text! = NSUserDefaults.standardUserDefaults().objectForKey("ISBNtxt") as! String
     }
}