Pythonista3でTableviewを使う
Pythonisata3でui.tableviewを使うときにハマったのでメモ
.pyuiファイルにTextFieldを配置したとき
TextFieldの中身はsuperviewで読み出せる
例えばTextFieldの名前をtextfield1とするとき
以下のように書く
def on_textfield(sender): a = sender.superview['textfield1']
これがTableViewの場合だとsuperviewの前にtableviewを挟まないといけない
例えばTableViewの名前がtableview1とするとき
このように書く
def on_tableview(sender): b = sender.tableview.superview['tableview'1]
これでTableViewの読み書きできる
こんな感じで任意のリストを
TableViewに加えることができる
list = ui.ListDataSource([{'title':'dog'}, {'title':'cat'}, {'title':'bird'}]) tableview.data_source.items = [] for i in list.items: tableview.data_source.items.append(i) tableview.reload_data()
関数の引数であるsenderは
.pyui上のどのパーツをタップしたかで
内容が異なっている
for key in sender.__dict__.keys(): print(key)
で内容を確認できて
_pyuiが含まれていると
superviewを使えるっぽい
以下が確認した内容で
TableViewではsender.tablevewに_pyuiが含まれる
---sender@TextField--- <class '_ui.TextField'> _pyui None ---sender@TableView--- <class 'ui.ListDataSource'> tableview reload_disabled delete_enabled move_enabled action edit_action accessory_action tapped_accessory_row selected_row _items text_color highlight_color font number_of_lines None ---sender.tableview@TableView--- <class '_ui.TableView'> _pyui None