mecobalamin’s diary

人間万事塞翁が馬

https://help.hatenablog.com/entry/developer-option

Pythonista3でTableviewを使う


PythonではじめるiOSプログラミング

PythonではじめるiOSプログラミング

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