swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 //+ボタン 6 @IBAction func btr(_ sender: Any) { 7 alert() 8 } 9 10 //ラベルについて 11 func label(){ 12 let addLabel = UILabel(frame: CGRect(x: 130, y:300, width: 100, height:20)) 13 //addLabel.text = "labelです" 14 addLabel.backgroundColor = UIColor.lightGray 15 addLabel.font = UIFont.systemFont(ofSize: 30) 16 self.view.addSubview(addLabel) 17 } 18 19 func alert(){ 20 let alert = UIAlertController(title: "タイトル", message: "メッセージ", preferredStyle: .alert) 21 22 // OKボタンの設定 23 let okAction = UIAlertAction(title: "OK", style: .default, handler: { 24 (action:UIAlertAction!) -> Void in 25 26 // OKを押した時入力されていたテキストを表示 27 if let textFields = alert.textFields { 28 29 // アラートに含まれるすべてのテキストフィールドを調べる 30 for textField in textFields { 31 addlabel = textField.text 32 print(textField.text!) 33 } 34 } 35 }) 36 alert.addAction(okAction) 37 38 // キャンセルボタンの設定 39 let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) 40 alert.addAction(cancelAction) 41 42 // テキストフィールドを追加 43 alert.addTextField(configurationHandler: {(textField: UITextField!) -> Void in 44 textField.placeholder = "テキスト" 45 }) 46 47 alert.view.setNeedsLayout() // シミュレータの種類によっては、これがないと警告が発生 48 49 // アラートを画面に表示 50 self.present(alert, animated: true, completion: nil) 51 52 } 53 54 override func viewDidLoad() { 55 super.viewDidLoad() 56 } 57 58 override func didReceiveMemoryWarning() { 59 super.didReceiveMemoryWarning() 60 // Dispose of any resources that can be recreated. 61 } 62 63 64}
アラートで入力したテキストをlabelにしたいのですがどのようにすればいいか分からないです。今の所,コード上でlabelを表示させる事とalertを呼び出す事は出来ます。
addlabel = textField.textの部分でCannot assign to property: 'addlabel' is a methodこのようなエラーが表示されています。
//addLabel.text = "labelです" ってあるのに。。。
addLabel.text = "labelです"ですと表示されるラベルはlabelです。にしかならないので自分としてはアラートで入力したテキストをラベルに反映させたいです。
文字列よりも、左側に注目です。
左側を見てみたのですがaddLabel.textのどこがダメなのか分からないです。outletでlabelとtextfieldを作っていればaddLabel.text = textField.textにすれば入力したテキストがアラートに表示できるんですけどalertでのtextFieldの場合は同じようにするとエラーが出てしまいます。
解決できました。
一応実行して確認出来たのですがこのコードでいいのか見てもらえませんか?またこのコードより簡潔にできるものがあれば教えて頂きたいです。
さらっと「addLabel.text = textField.text にすれば」って書いてますけど、最初に提示されてるコードは「addlabel = textField.text」ですよ。
すいません。最初に提示してたものから変更を加えたものをお伝えしていなかったのですね。すいませんでした。
先日は質問について教えた頂きありがとうございました。マナー違反かもしれませんがこちらの質問で分からなくて困っています。もし宜しければ教えて頂けないでしょうか?https://teratail.com/questions/115304
回答1件
あなたの回答
tips
プレビュー