在文本字段中指定字符串并显示

时间:2016-06-27 10:49:41

标签: ios swift

我有2个观点。 第一种视图是“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)
}
}

第二个是ScanView;

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                
}

2 个答案:

答案 0 :(得分:0)

if let UploadVC = self.storyboard?.instantiateViewControllerWithIdentifier("UploadMain") as? UploadMain {
UploadVC.ISBNstring = self.detectionString!
UploadVC.ISBN.text! = UploadVC.ISBNstring

这不是正确的方法。 您应该使用代理来传播更改。使用NSUserDefault在这里不是正确的,尽管它很容易解决。

答案 1 :(得分:0)

第二个是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
     }
}