2016-11-01 10 views
1

main.storyboard私の文字列は、私がそれを示している以下の私のコードとして

にアクセスしようとしたときはnilと来るUserDefaultsを使用して設定...私は、保存ボタンを押すと

、それはので、ユーザーのデフォルトにテキストフィールドの入力を保存します私はそれをラベルに表示することができます。それは入力を保存するとすぐにラベルが表示されるので、うまくいきます。

スワイプジェスチャーを追加して、ラベルを含むUIViewを反転し、別の画像を表示しました。しかし、スワイプで元に戻したいときは、ラベルが現在ではなくなっているというエラーが表示されます。

私はこれに新しいです、簡単に修正するのは簡単な愚かなエラーであれば余裕があります。任意のヘルプについては、

Thnx

ViewController.swiftファイル

import UIKit 

class ViewController: UIViewController { 

var back: UIImageView! 

@IBOutlet weak var plateView: UIView! 
@IBOutlet weak var text: UITextField! 
@IBOutlet weak var label: UILabel! 
@IBOutlet weak var saveBtn: UIButton! 

var showingFront = true 

let defaults = UserDefaults.standard 

override func viewDidLoad() { 
    super.viewDidLoad() 

    back = UIImageView(image: UIImage(named: "back.png")) 

    let swipe = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.swiped)) 
    swipe.direction = UISwipeGestureRecognizerDirection.left 
    plateView.addGestureRecognizer(swipe) 

    label.backgroundColor = UIColor(patternImage: UIImage(named: "blank.png")!) 

    saveBtn.isHidden = true 

} 


func swiped() { 

    if (showingFront) { 

     UIView.transition(from: label, to: back, duration: 1, options: UIViewAnimationOptions.transitionFlipFromRight, completion: nil) 

     showingFront = false 

    } else { 


     UIView.transition(from: back, to: label, duration: 1, options: UIViewAnimationOptions.transitionFlipFromLeft, completion: nil) 

     showingFront = true 

    } 
} 


@IBAction func editingDidBegin(_ sender: Any) { 

    saveBtn.isHidden = false 
    label.isHidden = true 
    text.isHidden = false 
} 

@IBAction func save(_ sender: Any) { 

    defaults.set(text.text, forKey: "number") 
    defaults.synchronize() 
    let num = defaults.string(forKey: "number") 
    label.text = num 

    label.isHidden = false 
    saveBtn.isHidden = true 

    view.endEditing(true) 

} 


override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


} 
+0

あなたのストーリーボード/ xibの画像を共有してより明快になることができますか? –

+0

が完了しました。また、更新されたコードので、そのクリーナーとより意味をなさない – koz

答えて

0

私はあなたのコードは今の単なるテストであると仮定します。それはいくつかの理由で失敗することがあるので

defaults.set(text.text, forKey: "number") 
defaults.synchronize() 

... 

はさらに、defaults.string(forKey: ...)は、オプションを返します。それらはシステムによって書き込まれますので、userDefaultsを同期させるための

してみてください。

if let num = defaults.string(forKey: "number") { 
    lab.text = num 
} 
+0

それはラベルに表示されているため、私は保存を押すと動作します。しかし、私はそれを反転させるためにスワイプし、再度ラベルにフリップするためにスワイプしようとすると、それはその無しと言う。 – koz

関連する問題