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 not reloading
-
I cannot get the second table to reload with data from the first tableview on did select.
import ui import json import time songList = [] libraryData = [] serviceData = [] previewData = [] liveData = [] def getJsonSongs(): with open('songs.json') as in_file: new_dict = json.load(in_file) for song in new_dict: songList.append(song) def setLibrarySongs(): for song in songList: libraryData.append(song) getJsonSongs() setLibrarySongs() class libraryTable(object): #also acts as the data_source. Can be separate, but this is easier. def __init__(self,items): self.items = items self.currentNumLines = len(items) self.currentTitle = None self.currentRow = None def tableview_did_select(self, tableview, section, row): # Called when a row was selected. serviceData.append(self.items[row]) servTable.reload() tableview.reload() def tableview_did_deselect(self, tableview, section, row): # Called when a row was de-selected (in multiple selection mode). pass def tableview_title_for_delete_button(self, tableview, section, row): # Return the title for the 'swipe-to-***' button. return 'Delete' # or 'bye bye' or 'begone!!!' def tableview_number_of_sections(self, tableview): # Return the number of sections (defaults to 1). Someone else can mess with # sections and section logic return 1 def tableview_number_of_rows(self, tableview, section): # Return the number of rows in the section return self.currentNumLines #needed to be in sync with displayed version, def tableview_cell_for_row(self, tableview, section, row): # Create and return a cell for the given section/row cell = ui.TableViewCell() cell.text_label.text = self.items[row]['title'] # or you could comment out the line above and use # #if self.items[row]['accessory_type'] == 'checkmark': # cell.text_label.font = ('<system-bold>',20) # or # cell.text_label.text_color = '#FF0000' # # for emphasis instead # return cell def tableview_can_delete(self, tableview, section, row): # Return True if the user should be able to delete the given row. return True # you can use logic to lock out specific ("pinned" entries) def tableview_can_move(self, tableview, section, row): # Return True if a reordering control should be shown for the given row (in editing mode). return True # see above def tableview_delete(self, tableview, section, row): # Called when the user confirms deletion of the given row. self.currentNumLines -=1 # see above regarding hte "syncing" tableview.delete_rows((row,)) # this animates the deletion could also 'tableview.reload_data()' del self.items[row] def tableview_move_row(self, tableview, from_section, from_row, to_section, to_row): # Called when the user moves a row with the reordering control (in editing mode). self.items = listShuffle(self.items,from_row,to_row) # cynchronizes what is displayed with the underlying list class serviceTable(object): #also acts as the data_source. Can be separate, but this is easier. def __init__(self,items): self.items = items self.currentNumLines = len(items) self.currentTitle = None self.currentRow = None def tableview_did_select(self, tableview, section, row): # Called when a row was selected. selectedItem = self.items[row]['title'] serviceData.append(listForTable([selectedItem])) servTable.reload() def tableview_did_deselect(self, tableview, section, row): # Called when a row was de-selected (in multiple selection mode). pass def tableview_title_for_delete_button(self, tableview, section, row): # Return the title for the 'swipe-to-***' button. return 'Delete' # or 'bye bye' or 'begone!!!' def tableview_number_of_sections(self, tableview): # Return the number of sections (defaults to 1). Someone else can mess with # sections and section logic return 1 def tableview_number_of_rows(self, tableview, section): # Return the number of rows in the section return self.currentNumLines #needed to be in sync with displayed version, def tableview_cell_for_row(self, tableview, section, row): # Create and return a cell for the given section/row cell = ui.TableViewCell() cell.text_label.text = self.items[row]['title'] # or you could comment out the line above and use # #if self.items[row]['accessory_type'] == 'checkmark': # cell.text_label.font = ('<system-bold>',20) # or # cell.text_label.text_color = '#FF0000' # # for emphasis instead # return cell def tableview_can_delete(self, tableview, section, row): # Return True if the user should be able to delete the given row. return True # you can use logic to lock out specific ("pinned" entries) def tableview_can_move(self, tableview, section, row): # Return True if a reordering control should be shown for the given row (in editing mode). return True # see above def tableview_delete(self, tableview, section, row): # Called when the user confirms deletion of the given row. self.currentNumLines -=1 # see above regarding hte "syncing" tableview.delete_rows((row,)) # this animates the deletion could also 'tableview.reload_data()' del self.items[row] def tableview_move_row(self, tableview, from_section, from_row, to_section, to_row): # Called when the user moves a row with the reordering control (in editing mode). self.items = listShuffle(self.items,from_row,to_row) # cynchronizes what is displayed with the underlying list libDel = libraryTable(libraryData) servDel = serviceTable(serviceData) control = ui.load_view() control.name = "Church Presentation App" libTable = control['libraryTable'] servTable = control['serviceTable'] libTable.delegate = libTable.data_source = libDel servTable.delegate = servTable.data_source = servDel nav = ui.NavigationView(control) nav.present('fullscreen',hide_title_bar=True)
-
@robertiii may i get the json data your using? or a dummy version
-
really haard to ork with with no data lol and i have no idea how your dictionary is structured
-
@robertiii, I think your main issue is that
tableview_number_of_rows
is returning a static value. You should returnlen(right_list_for_the_datasource)
. -
Mikael you’re a genius!