Chargement d'un NSTableView d'une manière spécifique

Bonjour à tous,
J'ai un tableau avec des données qu'il faudrait que je charge dans une TableView.
La ligne 1 aurait 10 colonnes et faudrait qu'elle soit chargée avec les 10 premiers enregistrements du tableau, les 10 colonnes suivantes de la ligne 2 avec les 10 enregistrements suivants etc...
J'ai essayé pas mal de choses, je n'y arrive pas !
Merci de votre aide.

Mots clés:

Réponses

  • heliohelio Membre
    juillet 2018 modifié #3

    Remplir une NSTableView, je sais faire :

    class ViewController: NSViewController {
       var objets: [String] = ["Objet 1", "Objet 2", "Objet 3"]
    
    
    
     }
    
    extension ViewController: NSTableViewDataSource, NSTableViewDelegate {
    
    func numberOfRows(in tableView: NSTableView) -> Int {
    
          return objets.count
    }
    
      func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
        let cell = tableView.makeView(withIdentifier: tableColumn!.identifier, owner: self) as! NSTableCellView
    
         if tableColumn == tableView.tableColumns[0] {
              cell.textField?.stringValue = objets[row]
    
    
        }
     }
    
    }
    

    le souci c'est que je dois le faire d'une façon particulière et c'est la où je n'y arrive pas
    il faudrait par exemple que Objet 1 apparaisse dans la colonne 1, Objet 2 dans la colonne 2 (jusqu'au 10ème élément sur la même ligne) ensuite je passe à la ligne suivante et les 10 objets suivants doivent s'afficher sur cette ligne etc...

  • Joanna CarterJoanna Carter Membre, Modérateur

    Donc il faut organiser tes données de la même manière.

  • A priori, dit comme cela, je verrais des boucles for imbriquées.

    pseudo code
    int nbColonnes = (floor)mesDataSource.count/10

    pour i de 0 à mesDataSource.count
      pour j de 0 à nbColonnes
       pour k de 0 à 9{
         monSlotDuTab(j,k) = mesDataSources[ i ]
    }
    

    Qu'est-ce qui ne va pas?

Connectez-vous ou Inscrivez-vous pour répondre.