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

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

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

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Swift

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

Q&A

解決済

1回答

2217閲覧

swiftでtableviewを使用しスクロールした際に更新させない方法

tayu

総合スコア11

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Swift

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

0グッド

0クリップ

投稿2016/10/21 06:47

今回swiftのtableviewについて質問させていただきます。
tableviewに乗り換えのデータを入れスクロールすると強制的にデータが更新されてしまう
のでそれを停止あるいはデータを変動させないようにしたいのですがご教授お願いいたします。
スクロールする際にif文の真の場合のtextが変動してしまいelse文の内容は変動しません。
なのでif文内の数値が変動しないように変更するにはどうすればいいでしょうか?

swift

1func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 2 let cell = tableboard.dequeueReusableCellWithIdentifier("table_cell", forIndexPath: indexPath) 3 4 let station_name = tableboard.viewWithTag(1) as! UILabel 5 let line_name = tableboard.viewWithTag(2) as! UILabel 6 let x = change_line[indexPath.row] 7 if(change_line[indexPath.row] == -1){ 8 station_name.text = ("↓ \(mini[change_line[indexPath.row + 1]] - mid_min)min") 9 mid_min = mini[change_line[indexPath.row + 1]] 10 line_name.text = "" 11 }else{ 12 switch(x){ 13 case start: 14 station_name.text = ("出発:\(STATION[change_line[indexPath.row]])") 15 line_name.text = transfer(change_line[indexPath.row]) 16 break 17 case goal: 18 station_name.text = ("到着:\(STATION[change_line[indexPath.row]])") 19 line_name.text = "" 20 break 21 default: 22 station_name.text = ("乗り換え:\(STATION[change_line[indexPath.row]])") 23 line_name.text = transfer(change_line[indexPath.row]) 24 break 25 } 26 } 27 return cell 28 }

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

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

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

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

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

guest

回答1

0

ベストアンサー

mid_minという変数が唐突に出現していますが、これが初期化されていないせいではないでしょうか?

投稿2016/10/21 07:28

fuzzball

総合スコア16731

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

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

tayu

2016/10/22 09:22

ありがとうございます! 再度tableviewが呼ばれることを考えていなかったので 処理後に再度初期化するのを忘れていました。 return cellの前にmid_minを初期化することで解決しました! 重ねて質問になるのですがtableviewはスクロールするごとに 再度呼び出されるという捉え方でよろしいでしょうか?
fuzzball

2016/10/22 14:40

「スクロールするごとに」というのはちょっと曖昧というか大雑把というか。セルが生成されるときに呼ばれます。cellForRowAtIndexPathの最初にprint文を入れて自分で確認してみて下さい。
tayu

2016/11/01 07:10

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問