2017-08-27 9 views
0

私はSwiftプログラミングの新機能で、ユーザーがアラートに入力した内容を表示できるかどうか疑問に思っていました。これは私がやっていることです:私はプログラムを実行するとアラートにユーザー入力を表示する方法は? (SWIFT)

import UIKit 

class ViewController: UIViewController, UITextFieldDelegate { 

//MARK: Properties 
@IBOutlet weak var mealNameLabel: UILabel! 
@IBOutlet weak var nameTextField: UITextField! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Handle the text field’s user input through delegate callbacks. 
    nameTextField.delegate = self 
} 

//MARK: UITextFieldDelegate 

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    // Hide the keyboard. 
    textField.resignFirstResponder() 
    return true 
} 

func textFieldDidEndEditing(_ textField: UITextField) { 
    mealNameLabel.text = textField.text 
    mealNameLabel.sizeToFit() 
} 

//MARK: Actions 
@IBAction func setDefaultLabelText(_ sender: UIButton) { 
    mealNameLabel.text = "Default Text" 
    mealNameLabel.sizeToFit() 
    let alertController = UIAlertController(title: "Hello, \(mealNameLabel.text))", message: "Enjoy our new app and make sure you rate us in AppStore!", preferredStyle: .alert) 
    let defaultAction = UIAlertAction(title: "Close Alert", style: .default, handler: nil) 
    alertController.addAction(defaultAction) 
    present(alertController, animated: true, completion: nil) 
} 

}

、それは「こんにちは、オプション(私はここで入力するものは何でも()が印刷されます)」と表示されます。オプションのものが角かっこで表示されるのはなぜですか?

答えて

0

mealNameLabel.textOptionalです。オプションは?で、textの値はUILabelであり、タイプはString?です。根底にある値にアクセスするには、あなたが!を使用して、それをアンラップする必要があるので、あなたのコードは、ラベルの値がnilある場合は、あなたのアプリがクラッシュする

let alertController = UIAlertController(title: "Hello, \(mealNameLabel.text!))", message: "Enjoy our new app and make sure you rate us in AppStore!", preferredStyle: .alert) 

でなければならないであろう。アンラッピング中にアプリがクラッシュした場合の詳細については、the post about itを参照してください。

関連する問題