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

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

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

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

解決済

[Swift] 違うファイルから違うファイルの配列に文字を加えたい

退会済みユーザー

退会済みユーザー

総合スコア0

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

1回答

0評価

0クリップ

147閲覧

投稿2021/11/07 09:16

#知りたいこと
まず、何を知りたいかをご説明します。
といってもタイトルのとおりなのですが

違うファイルから違うファイルの配列に文字を加えたい です。

やり方を教えて下さい。

#具体的なやりたい動き
storyboardはこうなっています。
![イメージ説明
1つ目をFirstView、2つ目をSecondViewと呼ぶことにします。

具体的なやりたい動きを説明します。
1.写真には写っていないですが、FirstViewにはボタンが有り、それを押すことによってSecondViewに遷移します(segueはshowに設定してます)。
2.SecondViewにあるTextFieldに文字を入力し、CreateButtonを押す。
3.CreateButtonを押すことによってFirstViewに戻ると同時にTextFieldに入力された文字をTableViewに使う配列に加える。
4.FirstViewに戻るとTableViewCellができていて、先程TextFieldに入力した文字が代入されている。

こんな感じです。

#書いてみたコード
コメントを書いておいたのでそちらの方を見ていただけるとありがたいです。

FirstViewController

import UIKit class ViewController: UIViewController { // 下の3つの配列に代入したいです。 var titleList: [String] = [] var detailList: [String] = [] var dateList: [String] = [] //ここまで @IBOutlet weak var tableView: UITableView! @IBOutlet weak var createButton: UIButton! override func viewDidLoad() { super.viewDidLoad() createButton.layer.cornerRadius = 37.5 view.addSubview(createButton) navigationItem.title = "ToDo" navigationSetUp() tableView.delegate = self tableView.dataSource = self } override func viewWillAppear(_ animated: Bool) { tableView.reloadData() } private func navigationSetUp() { navigationItem.largeTitleDisplayMode = .always navigationController?.navigationBar.prefersLargeTitles = true let appearance = UINavigationBarAppearance() appearance.configureWithDefaultBackground() appearance.backgroundColor = .systemTeal appearance.titleTextAttributes = [.foregroundColor: UIColor.white] appearance.largeTitleTextAttributes = [.foregroundColor: UIColor.white] navigationController?.navigationBar.scrollEdgeAppearance = appearance navigationController?.navigationBar.standardAppearance = appearance navigationController?.navigationBar.tintColor = .white } } extension ViewController: UITableViewDelegate, UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return titleList.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) cell.textLabel?.text = titleList[indexPath.row] cell.textLabel?.font = UIFont.systemFont(ofSize: 25) cell.detailTextLabel?.text = "(dateList[indexPath.row])まで" cell.detailTextLabel?.font = UIFont.systemFont(ofSize: 13) cell.detailTextLabel?.textColor = .darkGray return cell } }

SecondViewController

import UIKit class CreateViewController: UIViewController { @IBOutlet weak var titleTextField: UITextField! @IBOutlet weak var detailTextField: UITextField! @IBOutlet weak var datePicker: UIDatePicker! @IBOutlet weak var createButton: UIButton! // CreateButtonを押したときのAction @IBAction func createButtonAction(_ sender: Any) { //ここでFirstViewを扱えるようにしてappendしてみましたがTableViewに描画されません。 let vc = storyboard?.instantiateViewController(withIdentifier: "ViewController") as! ViewController vc.titleList.append(titleTextField.text!) vc.detailList.append(detailTextField.text!) let formatter = DateFormatter() formatter.locale = Locale(identifier: "ja_JP") formatter.timeZone = TimeZone(identifier: "Asia/Tokyo") formatter.dateFormat = "y/M/d H:m" let dateStr = formatter.string(from: datePicker.date) vc.dateList.append(dateStr) navigationController?.popViewController(animated: true) } //ここまで override func viewDidLoad() { super.viewDidLoad() createButton.isEnabled = false createButton.alpha = 0.7 createButton.layer.cornerRadius = 30 navigationItem.title = "Create" titleTextField.delegate = self detailTextField.delegate = self NotificationCenter.default.addObserver(self, selector: #selector(showKeyboard), name: UIResponder.keyboardWillShowNotification , object: nil) NotificationCenter.default.addObserver(self, selector: #selector(hideKeyboard), name: UIResponder.keyboardWillHideNotification, object: nil) } @objc func showKeyboard(notification: Notification) { let keyboardFrame = (notification.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as AnyObject).cgRectValue guard let keyboardMinY = keyboardFrame?.minY else { return } let ButtonMinY = createButton.frame.minY let distance = ButtonMinY - keyboardMinY - 50 let transform = CGAffineTransform(translationX: 0, y: -distance) UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: [], animations: { self.view.transform = transform }) } @objc func hideKeyboard() { UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: [], animations: { self.view.transform = .identity }) } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { self.view.endEditing(true) } } extension CreateViewController: UITextFieldDelegate { func textFieldDidChangeSelection(_ textField: UITextField) { let titleTextFieldIsEmpty = titleTextField.text?.isEmpty ?? true let detailTextFieldIsEmpty = detailTextField.text?.isEmpty ?? true if titleTextFieldIsEmpty || detailTextFieldIsEmpty { createButton.isEnabled = false createButton.alpha = 0.7 } else { createButton.isEnabled = true createButton.alpha = 1 } } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

hoshi-takanori

2021/11/07 10:03

FirstView に文字を追加するメソッドを用意して、delegate を使って SecondView から呼び出すのが一般的かと。 ちなみに、タイトルですが、「違うファイルから違うファイルの配列に文字を加えたい」だと複数のデータファイルの内容をマージしたいというように読めるので、「別の画面に情報を受け渡したい」とかの方が良い気がします。
退会済みユーザー

退会済みユーザー

2021/11/07 10:17

回答ありがとうございます! 文字を追加するメソッドというのは具体的にどのようなものですか? ご指摘ありがとうございます! 以後気をつけます。
退会済みユーザー

退会済みユーザー

2021/11/09 08:55

色々と調べてやってみたらできました! ヒントを頂きありがとうございます!

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。