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

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

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

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

Swift

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

Q&A

0回答

719閲覧

【優秀な方助けてください!】SpreadsheetViewのcell内の文字の追加について。

yamato-0123

総合スコア2

Xcode

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

Swift

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

0グッド

0クリップ

投稿2021/09/30 16:31

私は今、家にどんなものが何個あるかメモしておくアプリを作っています。
使用している外部ライブラリはspreadsheetViewというライブラリを使って表にまとめていきます。
とても長々コードを書いてしまって申し訳ないのですが、どうしても自分一人では考えることができない状況に陥ってしまいました。
その状況というものを説明します。
spreadsheetViewの表にpickerViewで選択したフルーツの個数をtextFieldに打ち込んで、それが表の適切な部分に表示されていくものを作っています。
spreadsheetViewの性質上、表示を更新して、文字が記入されているように見せていると考えています。しかし、表示を更新した際、一度入力した文字が消えて、新しい個数が記入されます。
そこで、一度記入したものを残したまま次の個数を書き込めるようにしたいです。
もこしておける機能があったりするのでしょうか、それともcellをstaticのように宣言するとできるのでしょうか。
本当に申し訳ないのですが、どうしても思いつきません。アイデアだけでいいので助言していただけないでしょうか。
よろしくお願いします。

swift

1import UIKit 2import SpreadsheetView 3 4class ViewController: UIViewController, SpreadsheetViewDataSource, SpreadsheetViewDelegate, UIPickerViewDelegate, UIPickerViewDataSource { 5 6 7 8 @IBOutlet var spreadsheetView: SpreadsheetView! 9 @IBOutlet var testScoretextField: UITextField! 10 11 var labelData: [String] = ["りんご","みかん","いちご","バナナ","メロン"] 12 13 var fruitsName: [String] = [] 14 15 var fruitsCount: Int? = 0 16 17 var fruitsNameCode = 0 18 19 20 //pickerViewのコード 21 22 //pickeViewの数 23 func numberOfComponents(in pickerView: UIPickerView) -> Int { 24 return 1 25 } 26 27 //pickeViewの中の行の数 28 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 29 return labelData.count 30 } 31 32 //pickeViewの中に表示するデータ 33 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 34 return labelData[row] 35 } 36 37 //pickeViewで選択されたのを取り出す 38 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 39 self.spreadsheetView.reloadData() 40 fruitsName = [] 41 fruitsName = [labelData[row]] 42 fruitsCount = Int(testScoretextField.text!) 43 if let firstIndex = labelData.firstIndex(of: fruitsName[0]) { 44 print("インデックス番号: (firstIndex)") 45 fruitsNameCode = firstIndex 46 47 } 48 49 } 50 51 //アプリを起動して画面を開いたら。っていうコード 52 override func viewDidLoad() { 53 // Do any additional setup after loading the view. 54 55 56 super.viewDidLoad() 57 spreadsheetView.register(MyLabelCell.self, forCellWithReuseIdentifier: MyLabelCell.identifier) 58 spreadsheetView.delegate = self 59 spreadsheetView.dataSource = self 60 view.addSubview(spreadsheetView) 61 } 62 // spreadsheetViewを表示する場所 63 override func viewDidLayoutSubviews() { 64 super.viewDidLayoutSubviews() 65 spreadsheetView.frame = CGRect(x: 125, y: 250, width: view.frame.size.width, height: view.frame.size.height-100) 66 } 67 68 //spreadsheetViewの縦列の数 69 func numberOfColumns(in spreadsheetView: SpreadsheetView) -> Int { 70 return 2 71 } 72 73 //spreadsheetViewの横列の数 74 func numberOfRows(in spreadsheetView: SpreadsheetView) -> Int { 75 return labelData.count 76 } 77 78 //spreadsheetViewのセルの縦大きさ 79 func spreadsheetView(_ spreadsheetView: SpreadsheetView, widthForColumn column: Int) -> CGFloat { 80 return 80 81 } 82 83 //spreadsheetViewのセルの横大きさ 84 func spreadsheetView(_ spreadsheetView: SpreadsheetView, heightForRow row: Int) -> CGFloat { 85 return 40 86 } 87 88 //spreadsheetViewの中のセルを表示します 89 func spreadsheetView(_ spreadsheetView: SpreadsheetView, cellForItemAt indexPath: IndexPath) -> Cell? { 90 91 let cell = spreadsheetView.dequeueReusableCell(withReuseIdentifier: MyLabelCell.identifier, for: indexPath) as! MyLabelCell 92 if indexPath.section == 0 { 93 cell.setup(with: labelData[indexPath.row]) 94 } 95 if indexPath.section == 1 { 96 if indexPath.row == fruitsNameCode { 97 cell.setup(with: String(fruitsCount!)) 98 } 99 } 100 return cell 101} 102 103 104 105//spreadsheetViewで難しかったので真似する 106class MyLabelCell: Cell { 107 static let identifier = "MyLablelCell" 108 109 private let label = UILabel() 110 111 public func setup(with text: String) { 112 label.text = text 113 label.textAlignment = .center 114 contentView.addSubview(label) 115 } 116 117 override func layoutSubviews() { 118 super.layoutSubviews() 119 label.frame = contentView.bounds 120 } 121} 122 123 124 125} 126 127``` 128 129本当に長々と失礼しました。教えていただけると本当にたすかります。 130よろしお願いします。

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

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

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

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

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

Zuishin

2021/09/30 23:32

家にある果物の数をメモするアプリが実用になるとは思えません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問