通过Segue传递数据(swift 2)

这是一个小费计算器项目,它必须有一个设置视图,我select默认的小费率。 我有一些传递数据的问题,当我select一个默认的提示百分比,它不会在View Controller中改变,我也想让应用程序记住closures应用程序并重新打开时的默认速率。 我真的很感激有人更正我的代码并进行testing。 这是为了进入大学的计算机科学计划,我以前没有任何编程语言的经验。

100 TipPercentageLabel.text =“(tipDisplay)%”}}

override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func setupContainer() { tipSlider.minimumValue = 0 tipSlider.maximumValue = 100 tipSlider.value = 20 tipSlider.addTarget(self, action: "sliderTipChanged:", forControlEvents: .ValueChanged) personsStepper.minimumValue = 1 personsStepper.maximumValue = 30 personsStepper.value = 1 personsStepper.addTarget(self, action: "sliderPersonChanged:", forControlEvents: .ValueChanged) amountTextField.text = "" refreshCalculation() } @IBAction func OnEditingFieldBill(sender: AnyObject) { refreshCalculation() } func refreshCalculation() { numberFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle if let amount = numberFormatter.numberFromString(amountTextField.text!) as? Double { let tipAmount = amount * tipPercentage let totalBill = amount + tipAmount let billPerPerson = totalBill / Double(numberOfPerson) numberFormatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle tipAmountLabel.text = numberFormatter.stringFromNumber(tipAmount) totalBillLabel.text = numberFormatter.stringFromNumber(totalBill) billPerPersonLabel.text = numberFormatter.stringFromNumber(billPerPerson) } else { tipAmountLabel.text = "-" totalBillLabel.text = "-" billPerPersonLabel.text = "-" } numberFormatter.numberStyle = NSNumberFormatterStyle.PercentStyle numberFormatter.minimumFractionDigits = 1 numberFormatter.maximumFractionDigits = 1 TipPercentageLabel.text = self.numberFormatter.stringFromNumber(tipPercentage) numberOfPersonLabel.text = "\(numberOfPerson)" } @IBAction func sliderTipChanged(sender: AnyObject) { tipPercentage = Double(round(tipSlider.value)) / 100 refreshCalculation() } @IBAction func StepperPersonChanged(sender: AnyObject) { numberOfPerson = Int(round(personsStepper.value)) refreshCalculation() } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if let id = segue.identifier { if id == "show settings" { if let SettingsViewController = segue.destinationViewController as? SettingsViewController { } } } } } 

设置视图控制器

 import UIKit class SettingsViewController: UIViewController { @IBOutlet weak var tipControl: UISegmentedControl! var tipRates:Double? override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func DefaultRate(sender: AnyObject) { va if let tip = tipRates { ViewController.tipPercentage = tip/100 

用你的DefaultRate IBActionreplace为:

 @IBAction func changevalue(sender: UISegmentedControl) { var tipRate = [5, 10, 15, 20, 25, 30] tipRates = Double(tipRate[tipControl.selectedSegmentIndex]) delegate?.tipPercentageChanged(tipRates!) print("(tipRates)") NSUserDefaults.standardUserDefaults().setDouble(tipRates!, forKey: "DefaultTipRate") NSUserDefaults.standardUserDefaults().synchronize() } 

并将事件设置为“Value Changed”,如下图所示

在这里输入图像说明

我强烈build议你在线浏览一些iOS和Swift入门教程。 SO并不是获得初学者对编程主题理解的地方。 一些推荐的教程:

Swift 2教程

苹果快速教程