omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    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

    Pythonista
    3
    5
    1894
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • robertiii
      robertiii last edited by

      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)
      
      
      stephen mikael 2 Replies Last reply Reply Quote 0
      • stephen
        stephen @robertiii last edited by

        @robertiii may i get the json data your using? or a dummy version

        1 Reply Last reply Reply Quote 0
        • stephen
          stephen last edited by

          really haard to ork with with no data lol and i have no idea how your dictionary is structured

          1 Reply Last reply Reply Quote 0
          • mikael
            mikael @robertiii last edited by mikael

            @robertiii, I think your main issue is that tableview_number_of_rows is returning a static value. You should return len(right_list_for_the_datasource).

            1 Reply Last reply Reply Quote 1
            • robertiii
              robertiii last edited by

              Mikael you’re a genius!

              1 Reply Last reply Reply Quote 1
              • First post
                Last post
              Powered by NodeBB Forums | Contributors