2015-03-19 13 views
6

Ho problemi con l'aggiunta di righe a WKInterfaceTable su Apple Watch. La cosa strana è che, qualunque cosa faccia, le prime 4 righe appaiono vuote. Ho provato ad aggiungere le righe manualmente e in un ciclo - non importa. Credo che il mio codice sia buono perché la 5a e le altre righe appaiono bene. Ecco cosa succede:Tabella di controllo Apple - prime 4 righe non visualizzate

empty rows

Scorrere ulteriormente:

enter image description here

Il mio codice:

import Foundation 
import WatchKit 

class TableInterfaceController: WKInterfaceController{ 

    @IBOutlet weak var agentTable: WKInterfaceTable! 

    let agents = ["The Dude","Walter","Donnie","Maude","Knox","Karl","Nihilist 2"] 

    override init(){ 
     super.init() 
     loadTableData() 
    } 


    private func loadTableData(){ 
     agentTable.setNumberOfRows(agents.count, withRowType: "AgentTableRowController") 
     println("Count: \(agents.count)") 

     for(index,agentName) in enumerate(agents){ 
      let row = agentTable.rowControllerAtIndex(index) as AgentTableRowController 
      println(agentName, index) 
      row.agentLabel.setText(agentName) 
     } 
    } 
} 

Qualsiasi aiuto apprezzato. Probabilmente è qualcosa di banale. Sto eseguendo Xcode 6.2 (6C131e) su Yosemite 10.10.2

+0

Le etichette in "AgentTableRowController' sono impostate su un valore diverso da zero? So che diverse volte, quando ho provato a popolare le righe della tabella, le uscite sono talvolta impostate casualmente su zero – prawn

+0

Se era nullo, l'App si arrestava in modo anomalo durante l'accesso alla proprietà agentLabel nella riga. – gh0st

+6

Prova a chiamare 'loadTableData()' nel metodo 'willActivate()' – dan

risposta

0

Forse provarlo con il ciclo indicizzato?

for var i=0; i<agents.count; i++ { 
    let row = agentTable.rowControllerAtIndex(i) as AgentTableRowController 
     println(agents[i], i) 
     row.agentLabel.setText(agents[i]) 
} 

Speranza che funziona per voi ..

+0

Niente da fare, ho anche provato questo: 'lasciare fila = agentTable.rowControllerAtIndex (0) come AgentTableRowController row.agentLabel.setText ("Agente1")' funziona Niente. – gh0st

+0

agent.count fornisce il valore corretto se lo si stampa in init()? – Tim

+0

sì, tutto è tip top. tutti gli indici, i valori vengono stampati correttamente. Le prime 4 righe non sono solo popolate. Forse è un bug. – gh0st

2

ho avuto lo stesso problema esatto in cui l'inizializzazione mia mensa nel awakeWithContext. Spostando l'inizializzazione della tabella in willActivate come suggerito da Dan il problema è stato risolto.

ho setacciato attraverso la documentazione di entrambi WKInterfaceController e WKInterfaceTable e suggeriscono che si dovrebbe essere in grado di eseguire l'inizializzazione in init o awakeWithContext, quindi credo che questo sia un bug nel quadro WatchKit.

Problemi correlati