Ios 准备继续,传递数据

Ios 准备继续,传递数据,ios,xcode,swift,segue,Ios,Xcode,Swift,Segue,嘿,伙计们,我需要一些代码方面的帮助,请看一下图片,看看我看到了什么。我正在Swift中制作一个小费计算器项目,我必须在设置视图中选择默认的小费率。我有一些错误,我必须尽快改正。我真的很感激有人修改我的代码并测试它。下面是两个视图控制器的代码,我没有发布设置视图控制器的图像,因为网站不允许我发布两个以上的链接,直到我获得更多的声誉 Xcode中的错误: 故事板:检查图像我在第一行有一些错误 import UIKit class ViewController: UIViewController

嘿,伙计们,我需要一些代码方面的帮助,请看一下图片,看看我看到了什么。我正在Swift中制作一个小费计算器项目,我必须在设置视图中选择默认的小费率。我有一些错误,我必须尽快改正。我真的很感激有人修改我的代码并测试它。下面是两个视图控制器的代码,我没有发布设置视图控制器的图像,因为网站不允许我发布两个以上的链接,直到我获得更多的声誉

Xcode中的错误:


故事板:检查图像我在第一行有一些错误

import UIKit

class ViewController: UIViewController, SettingDelegate {
// Inputs
@IBOutlet weak var amountTextField: UITextField!
//Labels
@IBOutlet weak var TipPercentageLabel: UILabel!
@IBOutlet weak var numberOfPersonLabel: UILabel!
@IBOutlet weak var tipAmountLabel: UILabel!
@IBOutlet weak var totalBillLabel: UILabel!
@IBOutlet weak var billPerPersonLabel: UILabel!
//Slider & Stepper
@IBOutlet weak var tipSlider: UISlider!
@IBOutlet weak var personsStepper: UIStepper!
//Variables
var tipPercentage : Double = NSUserDefaults.standardUserDefaults().doubleForKey("DefaultTipRate") ?? 0.20
var numberOfPerson:Int = 1
let numberFormatter:NSNumberFormatter = NSNumberFormatter()


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    tipAmountLabel.text = "$0.00"
    totalBillLabel.text = "Bill Total"
    billPerPersonLabel.text = "$0.00"
    TipPercentageLabel.text =  "20.0%"
    numberOfPersonLabel.text = "1"
    self.amountTextField.becomeFirstResponder()
}

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: UISlider) {

    tipPercentage = Double(round(tipSlider.value)) / 100
    refreshCalculation()
}


@IBAction func StepperPersonChanged(sender: UIStepper) {
    numberOfPerson = Int(round(personsStepper.value))
    refreshCalculation()
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let SettingsViewController = segue.destinationViewController as?SettingsViewController {
        SettingsViewController.delegate = self
        refreshCalculation()
            }
        }

}
设置查看控制器如下:

import UIKit
protocol SettingDelegate {
func tipPercentageChanged(newValue : Double)
}
class SettingsViewController: UIViewController {
var destName : String!
var delegate : SettingDelegate?
@IBOutlet weak var tipControl: UISegmentedControl!

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) {
    var tipRates = [0.05, 0.10, 0.15, 0.20, 0.25, 0.30]
    let tipRate = tipRates[tipControl.selectedSegmentIndex]

    delegate?.tipPercentageChanged(tipRate)

    NSUserDefaults.standardUserDefaults().setDouble(tipRate, forKey: "DefaultTipRate")
    NSUserDefaults.standardUserDefaults().synchronize()

}

/
对于第一个错误:

viewController
符合协议时,它需要实现协议实现的方法。在您的情况下,定义您应该拥有的

func tipPercentageChanged(newValue : Double) {
    //save the new value here
}
第一个错误应该会消失

看起来您正在使用
模式
转换显示
设置视图控制器
,因此您可以使用

self.dismissViewControllerAnimated(true, completion: {})
对于第一个错误:

viewController
符合协议时,它需要实现协议实现的方法。在您的情况下,定义您应该拥有的

func tipPercentageChanged(newValue : Double) {
    //save the new value here
}
第一个错误应该会消失

看起来您正在使用
模式
转换显示
设置视图控制器
,因此您可以使用

self.dismissViewControllerAnimated(true, completion: {})

因此,您要做的是将selectec提示从SettingsView转到“main”视图。对吗?为了符合
设置委派
协议,
视图控制器
必须实现方法
TipperContentageChanged
。您应该使用导航控制器,以便自动获取后退按钮,或者应该使用展开序列。执行常规顺序以返回主ViewController会创建它的新实例,而不是返回到原始实例。如果您反复这样做,您的内存将耗尽,应用程序将崩溃。是的@adolfosrs这就是我要做的。您的错误是什么?因此,您要做的是将selectec提示从设置视图转到“主”视图。对吗?为了符合
设置委派
协议,
视图控制器
必须实现方法
TipperContentageChanged
。您应该使用导航控制器,以便自动获取后退按钮,或者应该使用展开序列。执行常规顺序以返回主ViewController会创建它的新实例,而不是返回到原始实例。如果你反复这样做,你的内存将耗尽,应用程序将崩溃。是的@adolfosrs这就是我想做的。你的错误是什么?