Проблема с генерацией uiimage на втором контроллере с использованием значений userdefaults - PullRequest
0 голосов
/ 14 апреля 2019

Я хочу создать приложение, способное генерировать изображение штрих-кода на втором контроллере, используя имя пользователя и пароль в качестве учетных данных, которые будут храниться с использованием пользовательских ошибок.

С этим кодом изображение штрих-кода не генерируется. Я попытался использовать preformSegue, но после перезапуска приложения, поскольку я больше не на первом контроллере, мой второй контроллер пуст и больше нет изображения штрих-кода.

Вот мой код для класса AppDelegate

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    check()
    return true
}

func check(){
    if UserDefaults.standard.value(forKey: "activation") != nil {
        let vc = UIStoryboard(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "ViewController2")
        let navVC = UINavigationController(rootViewController: vc)
        let share = UIApplication.shared.delegate as? AppDelegate
        share?.window?.rootViewController = navVC
        share?.window?.makeKeyAndVisible()
    }
}

и для ViewController

class ViewController: UIViewController, UITextFieldDelegate {

var username: String = ""
var pass: String = ""

@IBOutlet weak var usernameCode: UITextField!
@IBOutlet weak var passwordCode: UITextField!

...

@IBAction func loginBtn(_ sender: Any) {
    view.endEditing(true)

    self.username = usernameCode.text!
    self.password = passwordCode.text!

    if username != "" && password != "" {
        UserDefaults.standard.set(usernameCode.text!, forKey: "activation")
        let vc = storyboard?.instantiateViewController(withIdentifier: "ViewController2")
        navigationController?.pushViewController(vc!, animated: true)
       //performSegue(withIdentifier: "go", sender: self)
    }else{
        let alert = UIAlertController(title: "warn!", message: "Not valid", preferredStyle: .alert)
        let ok = UIAlertAction(title: "Ok", style: .default, handler: nil)
        alert.addAction(ok)
        present(alert, animated: true, completion: nil)
    }

}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let vc = segue.destination as! ViewController2
    vc.generated = self.username

}

А для ViewController2

class ViewController2: UITableViewController {
var filter: CIFilter!
var generated = ""

@IBOutlet weak var barcodeImage: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView.rowHeight = 50
    if generated != ""{
        let data = generated.data(using: .ascii, allowLossyConversion: false)
        filter = CIFilter(name: "CICode128BarcodeGenerator")
        filter.setValue(data, forKey: "inputMessage")
        let transform = CGAffineTransform(scaleX: 10, y: 10)
        let image = UIImage(ciImage: filter.outputImage!.transformed(by: transform))
        barcodeImage.image = image
        print("have")
    }else {
        print("error +  \(generated)"  )
    }

}

.... }

Буду признателен, если кто-нибудь поможет мне с этим кодом.

...