How to scroll TableView
1.TableViewのスクロール方法
以前から、PythonistaでのTableViewのスクロール方法が解らず、色々調べていました。
なかなか、ズバリそのもの、という情報が見つかりません。
2.オブジェクトCクラス?
色々と調べていくと、どうも、Pythonのメソッド呼び出しをOBJーCメッセージに自動変換するラッパーのような
「objc_util」を使うとできそうな情報が見つかりました。
本当にできるのか、試してみたいと思います。
3.既存プログラムのバックアップ
現在のプログラムは最新版として保存し、コピペしたソースを変更します。
元のソースを別名に変更し、新しいプログラムを最新版と同名にします。
というのは、ソース(.py)を新規に作成すると、UI部分(.pyui)を作り直しになるので、それは時間の無駄になるので、今回はこのような方法を取ります。
(具体的にはb_score2.pyをb_score2_backup.pyとしてコピーを作成しておきます)
変更するのはb_score2.pyです。
4.関数作成
def TableViewScroll(tableView, rowNum, s_pos):
if (s_pos>=S_TOP and s_pos<=S_BOTTOM):
NSIndexPath = ObjCClass(“NSIndexPath”)
nsindex = NSIndexPath.indexPathForRow_inSection(rowNum,0 )
UITableViewScrollPosition = s_pos # 1:Top, 2:Middle, 3:Bottom
ObjCInstance(view).scrollToRowAtIndexPath:atScrollPosition_animated_(nsindex, UITableViewScrollPosition, True)
5.呼び出し
対象のTableViewを第1引数に、最大行数rowNumを第2引数、ポジションs_posを第3引数として、前記の「TableViewScroll」を呼び出す。
s_posは、S_TOP, S_MIDDLE, S_BOTTOMのいずれかを設定。
S_TOP, S_MIDDLE, S_BOTTOM以外が指定された場合は、何もせずにリターンする。
6.実装・結果
実際に実装し、動作を確認します。
前記の関数を追加し、データ更新時に呼び出すように実装したところ、エラー無しで実行するようにはなりました。
しかし、スクロールしません。。。残念。。。
TOPにしても、BOTTOMにしても、全くスクロールせず、です。
結果、スクロールさせられず、一旦断念。
わけがわかりません・・・
もう少し、調査、検討が必要です。
ほとんど誰にもみてもらえていないブログですが、もし、本件について助言をいただけると嬉しいです。