Come passare i dati memorizzati in un'etichetta dal controller di interfaccia a un altro controller di interfaccia in WatchKit utilizzando Swift? Non riesco a trovare una risposta da nessuna parte, spero che qualcuno qui possa aiutarmi. Ho incluso la sezione del mio codice che si occupa del calcolo del valore che ho bisogno di passare. Fondamentalmente voglio mostrare lo stesso valore che è stato calcolato dall'utente ed elaborarlo di più nel prossimo Controller di interfaccia chiamato ResultsController. Qualsiasi aiuto è molto apprezzato: DPassaggio di dati tra controller di interfaccia in WatchKit
class InterfaceController: WKInterfaceController {
var currentValue: String = "0"
func setDisplayValue(value: Double)
{
var percent = value
// check if value is an integer
if value % 1 == 0
{
// our value is an integer
currentValue = "\(Int(value))"// new value %
}
else
{
// our value is a float
currentValue = "\(value)"
}
// Display 2 decimal places in final amount
var round = NSString(format:"%.2f", value)
displayLabel.setText("$\(round)") // Display final value
// This value is what I want to be passed to another label in another IC.
}
// Answer Tapped
@IBAction func totalTapped() {
if command != nil
{
let answer = command!.executeWithNewValue((currentValue as NSString).doubleValue)
setDisplayValue(answer)
command = nil
calculationExecuted = true
}
}
}
Questo è il secondo controllore di interfaccia che voglio il valore dal primo ad essere visualizzato utilizzando un'etichetta.
import WatchKit
import Foundation
class ResultsController: WKInterfaceController {
@IBOutlet weak var totalLabel: WKInterfaceLabel!
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
// Label to hold the same value as in previous Interface Controller
totalLabel.setText("")
}
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
}
override func didDeactivate() {
// This method is called when watch view controller is no longer visible
super.didDeactivate()
}
}
Modifica: ecco il tutorial che ho seguito, l'ho manipolato un po 'per essere essenzialmente un suggerimento. Ho aggiunto in ResultsController per contenere le informazioni immesse dall'utente utilizzando la calcolatrice da InterfaceController ma non riesco a passare i dati sulle mie etichette in RC, nel comando I rimosso sottrarre e dividere in quanto non avrei bisogno di quelle . Quindi gli unici pulsanti di calcolo che ho sono multipli e addizionali. Esempio di come dovrebbe funzionare: Inserisci per un importo 12.58rubinetto si moltiplicano e entrare in 15rubinetto aggiungere e visualizza la quantità finale di 14,46 ho bisogno di passare su tutti quei valori di RC in etichette separate.
Qui è quello che sto cercando di realizzare: Passando il valore iniziale ad un'etichetta, e la quantità di punta, così come il costo finale per separare le etichette per assomigliare ad un disegno di legge.
Grazie per la risposta, AstroCB, la mia app è fondamentalmente una calcolatrice, quindi CurrentValue è in continua evoluzione, che il codice precedente che hai postato mostrava solo l'ultimo valore inserito dall'utente. Come potrei salvare il primo valore inserito e passare a un'etichetta ResultsController e anche passare il valore aggiunto, mult, div o sottratto a un'etichetta diversa in ResultsController e infine passare la "risposta" a un'etichetta diversa ? Ci scusiamo per tutte le domande lol – adrlan
@adrlan Non c'è problema; se vuoi passare più valori, puoi restituire un dizionario, come questo 'var dict: [String: Int] = [" added ": addedVal," sottratto ": subtrVal]' (ecc.) e quindi puoi accedervi in Risultati come questo: 'if let dict: [String: Int] = context as? [String: Int] {let added: Int = dict ["added"]} '. – AstroCB
E il contrario? Da 'ResultsController' a' InterfaceController' – Nico