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

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

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

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

Swift

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

Q&A

解決済

1回答

1232閲覧

タイマーの文字列をテキストフィールドに保存

15DB109_hotaka

総合スコア22

Xcode

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

Swift

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

0グッド

0クリップ

投稿2017/12/12 10:33

編集2017/12/13 07:34

タイマーに表示されている時間(Labelの文字)を
ボタンをタップで
テキストフィールドに記録する。
と言ったものを作りたいのですが、、、
イメージとしてはタイムラップみたいなものです。

現段階ではタイマーの実装はできています。
機能としては[スタート、ストップ、ラップ、リセット]です。
ラップはテーブルに記録するようになっています。

ラップ部分で、ボタンをタップでテーブルに記録しているところを
テキストフィールドに変えてみたのですが上手くいきませんでした。
具体的には
タイマースタートボタンタップ

タイマーストップボタンタップ(タイマーストップ)

ラップボタンタップ(テキストフィールドにタイム記録)←ここができない

Xcode8
Swift3

ご指摘よろしくお願いします!

Swift3

1 2import UIKit 3import RealmSwift 4 5class ViewController: UIViewController, UIPickerViewDelegate, UITextFieldDelegate,UIImagePickerControllerDelegate, UINavigationControllerDelegate,UIPickerViewDataSource { 6 7 var laps: [String] = [] 8 9 var timer = Timer() 10 var minutes: Int = 0 11 var seconds: Int = 0 12 var fractions: Int = 0 13 14 15 var stopwacthString: String = "" 16 17 var startStopWacth: Bool = true 18 var addLap: Bool = false 19 20 @IBOutlet weak var stopwacthLabel: UILabel! 21 @IBOutlet weak var todoNameText: UITextField! 22 23 let pickerOptions = [["","白","青"],["","1", "2", "3","4", "5", "6","7", "8", "9","10", "11", "12","13", "14", "15","16", "17", "18","19", "20"],["","AG", "P", "E","ES", "B", "BP","TO", "PG", "EG"]] 24 25 @IBOutlet weak var tableView: UITableView! 26 @IBOutlet weak var startstopButton: UIButton! 27 @IBOutlet weak var lapresetButton: UIButton! 28 @IBOutlet weak var resetButttom: UIButton! 29 30 @IBAction func startStop(_ sender: Any) { 31 32 if startStopWacth == true { 33 34 timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(ViewController.updateStopwacth), userInfo: nil, repeats: true) 35 startStopWacth = false 36 37 startstopButton.setImage(UIImage(named:"TEISHI.png"), for: .normal) 38 lapresetButton.setImage(UIImage(named:"KIROKU.png"), for: .normal) 39 addLap = true 40 41 } else { 42 43 timer.invalidate() 44 startStopWacth = true 45 46 startstopButton.setImage(UIImage(named:"KAISHI.png"), for: .normal) 47 //lapresetButton.setImage(UIImage(named:"Reeset.png"), for: .normal) 48 addLap = false 49 50 51 } 52 } 53 54 @IBAction func lapReset(_ sender: Any) { 55 56 57 if addLap == true { 58 59 laps.insert(stopwacthString, at: 0) 60 tableView.reloadData() 61 62 } else { 63 64 addLap = true 65 lapresetButton.setImage(UIImage(named: "KIROKU.png"), for: .normal) 66 67 68 //ラップの記録もリセットする 69 //laps.removeAll(keepingCapacity: false) 70 //LapsTableView.reloadData() 71 72 //fractions = 0 73 //seconds = 0 74 //minutes = 0 75 76 //topwacthString = "00:00.00" 77 // stopwacthLabel.text = stopwacthString 78 79 } 80 } 81 82 @IBAction func NewReset(_ sender: Any) { 83 84 laps.removeAll(keepingCapacity: false) 85 tableView.reloadData() 86 87 seconds = 0 88 minutes = 0 89 90 stopwacthString = "00:00" 91 stopwacthLabel.text = stopwacthString 92 } 93 var toDoItems:Results<ToDo>?{ 94 do{ 95 let realm = try Realm() 96 return realm.objects(ToDo.self) 97 }catch{ 98 print("エラー") 99 } 100 return nil 101 } 102 103 104 override func viewDidLoad() { 105 super.viewDidLoad() 106 // Do any additional setup after loading the view, typically from a nib. 107 108 109 let pickerview = UIPickerView() 110 pickerview.delegate = self 111 todoNameText.inputView = pickerview 112 113 } 114 115 override func didReceiveMemoryWarning() { 116 super.didReceiveMemoryWarning() 117 // Dispose of any resources that can be recreated. 118 stopwacthLabel.text = "00:00.00" 119 } 120 121 func numberOfComponents(in pickerView: UIPickerView) -> Int { 122 123 return pickerOptions.count 124 125 } 126 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 127 128 return pickerOptions[component].count 129 130 } 131 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 132 133 return pickerOptions[component][row] 134 135 } 136 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 137 138 let model = pickerOptions[0][pickerView.selectedRow(inComponent: 0)] 139 let color = pickerOptions[1][pickerView.selectedRow(inComponent: 1)] 140 let AC = pickerOptions[2][pickerView.selectedRow(inComponent: 2)] 141 142 todoNameText.text = model + " " + color + " " + AC 143 144 } 145 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 146 147 view.endEditing(true) 148 149 } 150 func updateStopwacth() { 151 152 fractions += 1 153 if fractions == 100 { 154 155 seconds += 1 156 fractions = 0 157 } 158 if seconds == 100 { 159 160 minutes += 1 161 seconds = 0 162 } 163 164 let franctionsString = fractions > 9 ?"(fractions)" : "0(fractions)" 165 let secondsString = seconds > 9 ?"(seconds)" : "0(seconds)" 166 let minutesString = minutes > 9 ?"(minutes)" : "0(minutes)" 167 168 stopwacthString = "(minutesString):(secondsString)" 169 stopwacthLabel.text = stopwacthString 170 } 171 172 @IBAction func addToDo(_ sender: Any) { 173 174 if isValidateInputContents() == false{ 175 return 176 } 177 178 179 180 // ToDoデータを作成する処理 181 let toDo = ToDo() 182 toDo.name = todoNameText.text! 183 184 // ToDoデータを永続化する処理 185 do{ 186 let realm = try Realm() 187 try realm.write{ 188 realm.add(toDo) 189 } 190 todoNameText.text = "" 191 }catch{ 192 print("失敗") 193 } 194 tableView.reloadData() 195} 196 197private func isValidateInputContents() -> Bool{ 198 // ToDo名のデータ入力 199 if let name = todoNameText.text{ 200 if name.characters.count == 0{ 201 return false 202 } 203 }else{ 204 return false 205 } 206 return true 207} 208 209} 210 211 212extension ViewController: UITableViewDataSource{ 213 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 214 215 return toDoItems?.count ?? 0 216 } 217 218 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 219 220 221 let toDo = toDoItems?[indexPath.row] 222 223 224// let cell1 = UITableViewCell(style: UITableViewCellStyle.value1, reuseIdentifier: "Cell") 225// cell1.backgroundColor = self.view.backgroundColor 226// 227// cell1.detailTextLabel?.text = laps[indexPath.row] 228 229 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! ToDoTableViewCell 230 // Realmに登録したデータをラベルに値設定 231 cell.nameLabel.text = toDo?.name 232 233 print(toDo?.name) 234 235 236 return cell 237 238 } 239 240 241 242// 削除処理 243 func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 244 if editingStyle == UITableViewCellEditingStyle.delete { 245 246 let realm = try!Realm() 247 248 _ = try!Realm().objects(ToDo.self) 249 250 // これはRealmSwiftでデータを削除しているケース 251 let deleteHistory = self.toDoItems?[indexPath.row] 252 // トランザクションを開始してオブジェクトを削除します 253 try! realm.write { 254 realm.delete(deleteHistory!) 255 } 256 257 258 // TableViewを再読み込み. 259 self.tableView.reloadData() 260 261 262 } 263 264 } 265 266 267 268}

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

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

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

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

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

fuzzball

2017/12/13 01:36

「上手くいきませんでした」を具体的に書いて下さい。
guest

回答1

0

ベストアンサー

todoNameText.text = (その時の時間)
で表示は出来ると思います

投稿2017/12/14 16:44

SKMT

総合スコア57

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

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

15DB109_hotaka

2017/12/15 00:38

ありがとうございました!できました!
SKMT

2017/12/15 00:45

よかったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問