質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

379閲覧

TextFieldに記入したテキストを指定したフォルダにテキストファイルとして保存したい

Laz0530

総合スコア15

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/12/22 08:07

Swiftで携帯アプリを作っています。
またStoryBoardは使用していなく、コードで全て作成しています。

TextFieldとUIButtonを設置し、ボタンをタップすることでそこに入力されたテキストを.txtの形で指定したフォルダに保存したいです。

どこのサイトを見ても、コード内の""にテキストを書き込みそれをパスで指定したフォルダに入れるというような解説しか載っていません。

どなたかご教授願います。

ちなみに今のところ、下のようなコードを書くところまで来ています。

import

1 2class ViewController: UIViewController, UITextFieldDelegate, UIScrollViewDelegate{ 3 var text1: UITextField = UITextField(frame: CGRect(x: 0,y: 0,width: 200,height: 30)) 4 var text2: UITextField = UITextField(frame: CGRect(x: 0,y: 0,width: 200,height: 30)) 5 let sc = UIScrollView(); 6 7 var txtActiveField = UITextField() 8 var csvData=[[String]]() 9 10 11 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 // Do any additional setup after loading the view, typically from a nib. 15 16 sc.frame = self.view.frame; 17 sc.backgroundColor = UIColor.cyan; 18 sc.delegate = self; 19 20 //textfileの位置を指定する 21 sc.contentSize = CGSize(width: 250,height: 1000) 22 self.view.addSubview(sc); 23 24 // 表示する文字を代入する. 25 text1.text = "" 26 text2.text = "" 27 28 // Delegateを設定する. 29 text1.delegate = self 30 text2.delegate = self 31 32 //CSVデータの作成 33 csvData.append(["text1","text2"]) 34 35 36 // 枠を表示する. 37 text1.borderStyle = UITextBorderStyle.roundedRect 38 text2.borderStyle = UITextBorderStyle.roundedRect 39 40 // UITextFieldの表示する位置を設定する. 41 text1.layer.position = CGPoint(x:self.view.bounds.width/2,y:100); 42 text2.layer.position = CGPoint(x:self.view.bounds.width/2,y:200); 43 44 self.view.addSubview(text1) 45 self.view.addSubview(text2) 46 47 48 //button1の設定 49 let button1: UIButton = UIButton(frame: CGRect(x: 0,y: 0,width: 200,height: 50)) 50 51 button1.setTitle("送信する", for: .normal) //UIButtonに表示されるテキスト 52 53 button1.setTitle("送信する", for: .highlighted) //タップした状態のテキスト 54 55 button1.setTitleColor(UIColor.gray, for: .highlighted) //タップした状態の色 56 57 button1.setTitleColor(UIColor.black, for: .normal) //テキストの色 58 59 button1.backgroundColor = UIColor.white //背景色 60 61 button1.layer.position = CGPoint(x:self.view.bounds.width/2,y:400); //UIButtonの表示する位置を設定する. 62 63 64 self.view.addSubview(button1) 65 66 // Viewに追加する 67 sc.addSubview(text1) 68 sc.addSubview(text2) 69 70 } 71 72 73 //改行ボタンが押された際に呼ばれる. 74 func textFieldShouldReturn(_ textField: UITextField) -> Bool { 75 textField.resignFirstResponder() 76 77 return true 78 } 79 80 //UITextFieldが編集された直後に呼ばれる. 81 func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 82 txtActiveField = textField 83 return true 84 } 85 86 override func viewWillAppear(_ animated: Bool) { 87 super.viewWillAppear(animated) 88 89 let notificationCenter = NotificationCenter.default 90 notificationCenter.addObserver(self, selector: #selector(ViewController.handleKeyboardWillShowNotification(_:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil) 91 notificationCenter.addObserver(self, selector: #selector(ViewController.handleKeyboardWillHideNotification(_:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil) 92 } 93 94 @objc func handleKeyboardWillShowNotification(_ notification: Notification) { 95 96 let userInfo = notification.userInfo! 97 let keyboardScreenEndFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue 98 let myBoundSize: CGSize = UIScreen.main.bounds.size 99 var txtLimit = txtActiveField.frame.origin.y + txtActiveField.frame.height + 8.0 100 let kbdLimit = myBoundSize.height - keyboardScreenEndFrame.size.height 101 102 print("テキストフィールドの下辺:((txtLimit))") 103 print("キーボードの上辺:((kbdLimit))") 104 105 if txtLimit >= kbdLimit { 106 sc.contentOffset.y = txtLimit - kbdLimit 107 } 108 } 109 110 @objc func handleKeyboardWillHideNotification(_ notification: Notification) { 111 sc.contentOffset.y = 0 112 } 113 114 115 override func didReceiveMemoryWarning() { 116 super.didReceiveMemoryWarning() 117 // Dispose of any resources that can be recreated. 118 } 119 120} 121

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

実現したい内容のどの部分に課題を持っているかが分かりづらい印象を受けましたが、ソースコードから

  • Buttonを動作させたい。
  • CSVを任意の場所に保存したい。

の2点について、説明したいと思います。

Buttonを動作させたい

viewDidLoad()にて以下の処理を追加し

Swift

1button1.addTarget(self, action: #selector(button1WasTapped), for: .touchUpInside) 2

新規のファンクションとして以下を宣言すればbutton1WasTapped内で処理が呼ばれます。

Swift

1@objc private func button1WasTapped(){ 2 print("Call button1WasTapped") 3}

CSVを任意の場所に保存したい

「どこのサイトを見ても」とあるのですが、どのサイトを見たのか分かりません。
想像で答えますが、「任意の場所に保存したいけれど、どのサイトもアプリケーション領域内しか保存できる説明しかない」ということでしょうか。例えば以下のようなサイトでしょうか。
iOSアプリのファイル保存について

基本的にアプリケーション領域内しか保存できません。
それ以外で保存したい場合はShareExtentionなどはいかがでしょうか

Share Extensionでデータを共有する

例えば、以下のような処理が実装可能です。

Swift

1 @objc private func button1WasTapped(){ 2 print("Call button1WasTapped") 3 let csvText = "(String(describing: text1.text)),(String(describing: text2.text))" 4 let activityVC = 5 UIActivityViewController(activityItems: [csvText], applicationActivities: nil) 6 self.present(activityVC, animated: true, completion: nil) 7 } 8

投稿2017/12/22 16:16

nakasho_dev

総合スコア2655

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Laz0530

2017/12/25 09:21

助かりました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問