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

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

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

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

Xcode

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

Swift

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

Q&A

解決済

1回答

1279閲覧

遷移する際に他のviewに日付、タイトルを表示させたい

退会済みユーザー

退会済みユーザー

総合スコア0

iOS

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

Xcode

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

Swift

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

0グッド

0クリップ

投稿2018/06/04 16:07

編集2018/06/05 01:16

swift

1 2import RealmSwift 3import UIKit 4 5extension UIColor { 6 class func rgb(r: Int, g: Int, b: Int, alpha: CGFloat) -> UIColor{ 7 return UIColor(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: alpha) 8 } 9} 10 11class HistoryViewController: UIViewController,UITableViewDelegate,UITableViewDataSource{ 12 13 @IBOutlet weak var HistorytableView: UITableView! 14 15 class CellHistory { 16 //var details: [String] = [] 17 var datetime = UILabel()//オプショナル型はなるべく使わない 18 var nameitem = UILabel() 19 } 20 var CellHistory: [CellHistory] = [] 21 let data = CellHistory() 22 // ボタンを用意 23 //let addBtn = UIBarButtonItem() 24 25 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 26 return 1 27 } 28 29 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 30 let cell = tableView.dequeueReusableCell(withIdentifier: "cell2", for: indexPath) 31 32 cell.textLabel?.text = data.nameitem.text 33 cell.detailTextLabel?.text = data.datetime.text 34 35 return cell 36 } 37 38 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 39 //セルの選択解除 40 tableView.deselectRow(at: indexPath, animated: true) 41 42 //ここに遷移処理を書く 43 self.onClick() 44 } 45 46 override func viewDidLoad() { 47 super.viewDidLoad() 48 HistorytableView.delegate = self 49 HistorytableView.dataSource = self 50 HistorytableView.backgroundColor = UIColor.rgb(r: 153, g: 255, b: 204, alpha: 1) 51 self.navigationItem.title = "データベース" 52 self.navigationController?.navigationBar.tintColor = UIColor.red 53 } 54 55 func onClick() { 56 print("ボタンがおされました") 57 let second = ViewController() 58 present(second, animated: true, completion: nil) 59 } 60 61}

swift

1import RealmSwift 2import UIKit 3 4class topViewController: ViewController { 5 6 @IBOutlet var titlelbl: UILabel? 7 8 //ここではViewControllerに飛ぶ遷移についてと遷移先のnavigationbarのtitleの変更について 9 @IBAction func StartButton(_ sender: Any) { 10 let alert = UIAlertController(title: "タイトル", message: "メッセージ", preferredStyle: .alert) 11 12 let okAction = UIAlertAction(title: "OK", style: .default, handler: { 13 (action:UIAlertAction!) -> Void in 14 15 if let textFields = alert.textFields { 16 17 for textField in textFields { 18 if let text = textField.text { 19 print(textField.text!) 20 self.data.datetime.insert(textField, at: 0) 21 self.HistorytableView.insertRows(at: [IndexPath(row: 0, section: 0)],with: UITableViewRowAnimation.automatic) 22 //遅延に関するコード // セグエにtextを渡す 23 DispatchQueue.main.asyncAfter(deadline: .now() + 0.01) { 24 self.performSegue(withIdentifier: "ViewControllersegue", sender: text)//元々nilだった 25 } 26 27 } 28 } 29 } 30 }) 31 alert.addAction(okAction) 32 33 let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) 34 alert.addAction(cancelAction) 35 36 alert.addTextField(configurationHandler: {(textField: UITextField!) -> Void in 37 textField.placeholder = "テキスト" 38 }) 39 alert.view.setNeedsLayout() // シミュレータの種類によっては、これがないと警告が発生 40 // アラートを画面に表示 41 self.present(alert, animated: true, completion: nil) 42 43 } 44 45 46 @IBAction func HitoryButton(_ sender: Any) { 47 48 } 49 50 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 51 if segue.identifier == "ViewControllersegue", 52 let nextView: ViewController = segue.destination as? ViewController, 53 let text = sender as? String { 54 55 //nextView.nametitle.titleName = text 56 nextView.titleName = text 57 } 58 59 60 61 let now = NSDate() // 現在日時の取得 62 63 let dateFormatter = DateFormatter() 64 65 dateFormatter.locale = NSLocale(localeIdentifier: "en_US") as Locale? // ロケールの設定 66 dateFormatter.dateFormat = "yyyy年MM月dd日 HH:mm"//:ss" // 日付フォーマットの設定 67 68 let dateString = dateFormatter.string(from: now as Date) 69 print(dateString) // -> 2014/06/25 02:13: 70 71 72 if segue.identifier == "segue2", 73 let nextView2: HistoryViewController = segue.destination as? HistoryViewController, 74 let text = sender as? String { 75 //tableViewにデータを渡す 76 nextView2.data.nameitem.text = text 77 nextView2.data.datetime.text = dateString 78 } 79 80 81 } 82 83 override func viewDidLoad() { 84 super.viewDidLoad() 85 86 self.view.backgroundColor = UIColor.rgb(r: 153, g: 255, b: 204, alpha: 1) 87 //今日やる事 88 89 } 90 91 override func viewDidAppear(_ animated: Bool) { 92 super.viewDidAppear(animated) 93 94 // ナビゲーションを透明にする処理 95 self.navigationController!.navigationBar.setBackgroundImage(UIImage(), for: .default) 96 self.navigationController!.navigationBar.shadowImage = UIImage() 97 } 98}

エラー個所

swift

1 self.data.datetime.insert(textField, at: 0)//Value of type 'topViewController' has no member 'data' 2 self.HistorytableView.insertRows(at: [IndexPath(row: 0, section: 0)],with: UITableViewRowAnimation.automatic)//Value of type 'topViewController' has no member 'HistorytableView'

やりたいこと

@IBAction func StartButton(_ sender: Any) {をタップした際にアラートが表示され入力したものを、遷移先のtableのセルに反映させると同時に遷移した時の日付を反映させたい。
イメージ
2018/04/01  アップル

エラー理由
topViewControllerのtableViewではなく、HistoryViewControllerのtableViewにデータを渡したいためtopViewControllerにはないと出てしまった。
なので、他のViewContorollerへの結びつけたを知りたい。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Realmを使用しているなら、入力時に保存。

次のViewでデータを呼び出す、でできるはずです。
Segueで渡すのはデータの識別子(Id)等のみでいいはずです。

ちなみにUIAlertでTextFieldの入力をさせるのは
あまりappleのデザイン形式としては好ましくないことだと思います。
どうしても必要でなければ、違う形式にした方がいいはずです。

投稿2018/06/05 08:53

hameji

総合スコア1380

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

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

退会済みユーザー

退会済みユーザー

2018/06/05 09:40

懇切に教えていただき有難うございました。 Realmへの理解が浅かったので一旦Realmを利用せずに出来るか試してたので@hamejiさんのおかげでこの質問をする必要はなかったですね。 申しわけありませんでした。 プログラミングは始めたばかりですので簡単な質問ばかりしてしまいご迷惑をおかけしてすいませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問