2017-03-15 1 views
0

J'utilise UIStepper dans une tapleviewcell mais je ne sais pas comment enregistrer la valeur stepper dans mon CoreData?Comment enregistrer UIStepper à CoreData (swift 3)

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell: StepperTableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell") as! StepperTableViewCell 

    //stepper is your UIStepper reference from StepperTableViewCell 
    cell.stepper.tag = indexPath.row 
    cell.stepper.addTarget(self, action: #selector(stepperAction(sender:)), for: .valueChanged) 

    return cell 
} 
func stepperAction(sender: UIStepper) { 
    print("Stepper \(sender.tag) clicked. Its value \(sender.value)") 
} 
+0

Que voulez-vous faire? Sauvegardez simplement le sender.value? Avez-vous vraiment besoin de données de base? Peut-être que UserDefaults sera génial, aussi? Pour les données de base ont un coup d'oeil ici https://www.raywenderlich.com/145809/getting-started-core-data-tutorial ou ici https://learnappdevelopment.com/ios-app-development-free/how-to -use-core-data-in-ios-10-swift-3/ou ici https://medium.com/ios-geek-community/beginners-guide-to-core-data-in-swift-3-85292ef4edd # .gnbnvyows – kuzdu

+0

J'utilise CoreData dans mon projet et le stepper en fait partie. Je sais comment enregistrer le texte de UITextfield à CoreData mais je ne sais pas comment enregistrer la valeur IUStepper dans le CoreData – Alex

+0

De toute façon je ne comprends pas le problème. sender.value est un double ou un nombre, n'est-ce pas? Core Data prend en charge le double. Enregistrez-le de la même manière que la chaîne. Voir ici: http://stackoverflow.com/questions/37958530/using-double-in-core-data – kuzdu

Répondre

1

1.You créer une variable dans votre StepperTableViewCell comme celui-ci

var callBackStepper:((_ value:Double)->())? 

2.You créer un IBAction dans votre StepperTableViewCell (ne pas oublier faire une référence à votre interface utilisateur) cela pourrait avoir un ressembler à ceci:

@IBAction func stepperTapped(sender: AnyObject) { 
    callBackStepper?(sender.value) 
} 
  1. Dans votre UIViewController où le tableView vous définissez le rappel

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell: StepperTableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell") as! StepperTableViewCell 
    
    cell.callBackStepper = { value in 
        print("every time called when you use UIStepper \(value)") 
    } 
    return cell 
    } 
    

Il est non testé, mais il devrait fonctionner, s'il vous plaît donner une rétroaction

+0

Je ne le test pas encore mais comment enregistrer la valeur de stepper qui est pour chaque cellule dans CoreData? – Alex

+0

Je pensais que vous savez comment enregistrer la valeur de manière persistante lorsque vous avez la valeur? Vous obtenez toujours la valeur dans le rappel. Pour l'enregistrer de manière persistante jeter un oeil stackoverflow.com/questions/37958530/using-double-in-core-da ta S'il vous plaît tester le code d'abord! – kuzdu

+0

Je l'ai testé, maintenant j'ai la valeur mais j'ai de la valeur dans chaque cellule parce que j'ai une tableview dans mon projet, alors comment puis-je mettre à jour CoreData avec chaque nouvelle valeur de stepper qui est dans chaque cellule. – Alex