我是iOS编程的新手,我正在尝试构建一个简单的计算器应用程序,但我仍然坚持在两个viewControllers之间连接动作。我试图通过在第二个视图中操作相同的控件来更改firstView的segmentControl的值。有什么建议怎么办?谢谢。以下是它的代码和截图。
class ViewController: UIViewController {
@IBOutlet weak var billField: UITextField!
@IBOutlet weak var totalLabel: UILabel!
@IBOutlet weak var tipLabel: UILabel!
@IBOutlet weak var tipControll: UISegmentedControl!
@IBAction func onTap(_ sender: Any) {
//dismiss the keyboard when we tap anywhere from the screen
view.endEditing(true)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func calculateTip(_ sender: AnyObject) {
//calculate
let percentage = [0.18, 0.2, 0.25]
let bill = Double(billField.text!) ?? 0
let tip = bill * percentage[tipControll.selectedSegmentIndex]
let total = bill + tip
//set the labels
tipLabel.text = String(format: "$%.2f", tip)
totalLabel.text = String(format: "$%.2f", total)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("view will appear")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("view did appear")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print("View will disappear")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("view did disappeared")
}
import UIKit
class SettingViewController: UIViewController {
@IBOutlet weak var segmentControlLabel: 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.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
@IBAction func onTipChanged(_ sender: Any) {
}
}
答案 0 :(得分:0)
我认为您应该使用UserDefaults
来连接数据,因为它会保存下次打开应用的提示默认值。
在第二个视图控制器中
override func viewDidLoad() {
super.viewDidLoad()
// Get value saved in last time here.
//NSUserDefaults.standardUserDefaults().integerForKey("DefaultTip")
}
@IBAction func onTipChanged(_ sender: Any) {
// Set value when tip changed
//NSUserDefaults.standardUserDefaults().setInteger(value, forKey: "DefaultTip")
}
在第一个视图控制器中
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("view will appear")
// Get value saved in last time here.
//NSUserDefaults.standardUserDefaults().integerForKey("DefaultTip")
}
请记住注册默认值
NSUserDefaults.standardUserDefaults().registerDefaults([
"DefaultTip": <your default value>
])
在AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
NSUserDefaults.standardUserDefaults().registerDefaults([
"DefaultTip": <your default value>
])
return true
}