Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
TableView do not work?
-
Hello, all.
This code do not work.
When you tap , it will not work. (~~;;)
Any suggestion,please...# coding: utf-8 import ui import console class MyTableView(object): def __init__(self): foods = [{'title': 'Vegitable'}, {'title': 'Fruits'}, {'title': 'Fish'}] self.list = ui.ListDataSource(foods) self.tv = ui.TableView() self.tv.name = 'Kind' self.tv.delegate = self.tv.data_source = self.list nv = ui.NavigationView(self.tv) nv.name = 'Foods' nv.present('sheet') def tableview_did_select(self, tableview, section, row): self.tv.name = self.list[row]['title'] self.tv.delegate = self.tv.data_source = self.list table_view.navigation_view.push_view(self.tv) def tableview_number_of_sections(self, tableview): return 1 def tableview_number_of_rows(self, tableview, section): return len(self.list) def tableview_cell_for_row(self, tableview, section, row): cell = ui.TableViewCell() cell.text_label.text = self.list return cell ### main ######################## MyTableView()
-
It doesn't work because the tableview delegate is set to
ui.ListDataSource()
instead ofMyTableView
.
I think you should useMyTableView
as both the data source and as the delegate.
Maybe something like this?# coding: utf-8 import ui import console class MyTableView(object): def __init__(self): self.list = [{'title': 'Vegitable'}, {'title': 'Fruits'}, {'title': 'Fish'}] self.tv = ui.TableView() self.tv.name = 'Kind' self.tv.delegate = self self.tv.data_source = self nv = ui.NavigationView(self.tv) nv.name = 'Foods' nv.present('sheet') def tableview_did_select(self, tableview, section, row): tv = ui.TableView() tv.name = self.list[row]['title'] tv.delegate = self tableview.navigation_view.push_view(tv) def tableview_number_of_sections(self, tableview): return 1 def tableview_number_of_rows(self, tableview, section): return len(self.list) def tableview_cell_for_row(self, tableview, section, row): cell = ui.TableViewCell() cell.text_label.text = self.list[row]['title'] return cell ### main ######################## MyTableView()
-
@Sebastian
Thank you! It works,well!
And then, the sub menu was added to 'fruits'.
There may be a better way...# coding: utf-8 import ui import console class MyTableView(object): def __init__(self): self.list = [{'title': 'Vegitable'}, {'title': 'Fruits'}, {'title': 'Fish'}] self.tv = ui.TableView() self.tv.name = 'Kind' self.tv.delegate = self self.tv.data_source = self nv = ui.NavigationView(self.tv) nv.name = 'Foods' nv.present('sheet') def tableview_did_select(self, tableview, section, row): tv = ui.TableView() tv.name = self.list[row]['title'] if tv.name == 'Fruits': sub_ds = SubTableView() tv.data_source = sub_ds tv.delegate = sub_ds tableview.navigation_view.push_view(tv) else: tv.delegate = self tableview.navigation_view.push_view(tv) def tableview_number_of_sections(self, tableview): return 1 def tableview_number_of_rows(self, tableview, section): return len(self.list) def tableview_cell_for_row(self, tableview, section, row): cell = ui.TableViewCell() cell.text_label.text = self.list[row]['title'] return cell class SubTableView(object): def __init__(self): self.fruits = [{'title': 'Banana'}, {'title': 'Orenge'}, {'title': 'Grape'}] self.tv = ui.TableView() self.tv.delegate = self self.tv.data_source = self def tableview_did_select(self, tableview, section, row): tv = ui.TableView() tv.name = self.fruits[row]['title'] tv.delegate = self tableview.navigation_view.push_view(tv) def tableview_number_of_sections(self, tableview): return 1 def tableview_number_of_rows(self, tableview, section): return len(self.fruits) def tableview_cell_for_row(self, tableview, section, row): cell = ui.TableViewCell() cell.text_label.text = self.fruits[row]['title'] return cell ### main ######################## MyTableView()