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

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

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

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

Q&A

解決済

1回答

950閲覧

TableViewでコードから追加したセクションを画面内にスクロールして表示する

退会済みユーザー

退会済みユーザー

総合スコア0

Swift

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

0グッド

0クリップ

投稿2018/10/24 12:43

いつもお世話になります。

UITableViewにコードからセクションを追加した際に、セルの数によっては追加セクションが画面外になって
しまうことがあるのですが、これをなんとか追加時に画面内に表示することはできないでしょうか?

セルの追加の際には、scrollToRow(at:at:animated:)メソッドにて画面内にスクロールさせてから、背景色をつけたりしています。
同じような感じで追加したセクションを画面内に表示できないでしょうか?

追加したセクションの上のセクションの最後のセルを画面内に表示するようにスクロールさせることも考えたのですが、セクションの中にセルが存在しない場合もあるのでこの方法ではうまくいかないようです。

swift

1 2// セクション名称の配列 3var sectionHeaderArray = ["1Char", "2Char","3Char"] 4// セル名称の配列 5var cellArrayOfArray = [["A", "B", "C"], ["AA", "AA", "AA"], ["AAA", "BBB", "CCC"]] 6 7 8// セクションの追加 9// 配列への追加 10sectionHeaderArray.append("4Char") 11cellArrayOfArray.append([]) 12// 追加するインデックスパスを取得する 13let addSectionIndex = sectionHeaderArray.count - 1 14// tableViewへの追加 15tTableView.insertSecion(IndexSet(interger: addSectionIndex), with: .fade) 16 17// アニメーションさせるためreload()はしたくない。 18 19 20// セルの追加 21// セルを追加するセクション 22var appendSection = 2 23 24// 配列への追加 25cellArrayOfArray[appendSection].append("DDD") 26 27// 追加するインデックスパスを取得する 28let addCellIndex = cellArrayOfArray.count -1 29let addCellIndexPath = IndexPath(row: addCellIndex, section: appendSection) 30 31// tableViewへの追加 32tTableView.insertRows(at: [addCellIndexPath], with: .fade) 33tTableView.scrollToRow(at: addCellIndexPath, at: .middle, animated: true) 34 35// セルの背景に選択色をつけ、その後解除する 36if let addCell = tTableView.cellForRowAt(at: addCellIndexPath) as? customCell { 37 addCell.backgroundColor = UIColor.lightGray // editing = trueのため、contentViewでなくセルに直接背景色を設定 38 DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { 39 UIView.animate(withDuration: 0.5, animations: { 40 // 追加したセルの背景色設定を解除する 41 addCell.backgroundColor = UIColor.clear 42 }) 43 } 44 } 45 46 47 48 49 50

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

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

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

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

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

guest

回答1

0

ベストアンサー

UITableViewのメソッドで解決しようとしていましたが、↓のUIScrollViewの記事を参考にセクションを追加してからtableViewを一番下までスクロールさせて追加したセクションを画面内に表示できるようになりました。

UIScrollViewで一番上/下/左/右までスクロールさせる

投稿2018/10/24 13:13

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問