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

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

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

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

Swift

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

Q&A

1回答

1610閲覧

TableViewCellにStepperを置く。

yudai0224

総合スコア17

Xcode

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

Swift

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

0グッド

0クリップ

投稿2019/09/01 06:09

前提・実現したいこと

stepperで変更されたLabel1の数値をそれぞれのcellごとで保存したいです(キャベツならキャベツの数値、キュウリならキュウリの数値という感じで、)。
userDefaultsを使ったコードを書いてみますたが、サブクラスなのでうまくいきませんでした。
今書いているコードだと、Label1 stepper1で全てのcellを補っている感じですよね?まずそこがいけないのでしょうか。ネットで探してもないですし、考えても分かりません。どなたか親切な方解決方法よろしくお願いします。

イメージ説明
イメージ説明

該当のソースコード

import UIKit class TableViewController3:UIViewController,UITableViewDelegate,UITableViewDataSource{ @IBOutlet var MyTV3: UITableView! let item = ["キャベツ","キュウリ","ゴーヤ","ゴボウ","ジャガイモ","タマネギ","ニンジン","ネギ","ハクサイ","パプリカ","ピーマン","モヤシ","レタス"] func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return item.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell3", for:indexPath) cell.textLabel?.text = item[indexPath.row] return cell } }
import UIKit class TableCellController1:UITableViewCell{ @IBOutlet var Label1: UILabel! @IBAction func Stepper1(_ sender: UIStepper) { let num = Int(sender.value) Label1.text = String(num) } }

補足情報(FW/ツールのバージョンなど)

初心者なりに考えたのですが、storyboardにてTableViewCellを複数個追加してからコードは書けないのでしょうか?
イメージ説明
このようにです。この時のコードはどのようにすればよいでしょうか。

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

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

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

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

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

guest

回答1

0

UITableViewCellは、表示されていない場合はメモリーから削除されることがあります。なのでスクロールするとstepperの値ごと消えてしまうのが問題なのではないでしょうか?

基本的なやりかたとして、
0. UITableViewCellで加減されたstepperの値は、TableViewController3に配列か何か(userDefaultsでも良いはずです)に格納する。
0. 下記のコード中で1)で保存したstepper値を使ってUITableViewCellを初期化する。
ただし、TableCellController1へのcastが必要と思いますのでご注意を。

TableViewController3

1func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell

投稿2019/09/01 14:02

k2moons

総合スコア184

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問