修改的 Current Code
所以我刚刚开始iOS开发,所以我决定制作一个Tip Calculator来学习Swift的基础知识和基础。我是70%的方式,但我觉得我在从另一个UIViewController引用数据时遇到了麻烦......
所以我有一个加载屏幕,点击按钮后它转到了Tip Calculator ...然后我有一个设置可以改变分段控制部分的标题。因此,如果我想将默认设置更改为(10%,15%,30%),我可以在“设置”上执行此操作。但是,我似乎无法弄清楚如何获取TextField.text并使其成为分段控制标题的标题。
我有一个属于“设置”页面的ViewController3类,但它完全是空白的。
答案 0 :(得分:0)
要将设置传递回第一个viewController,您可以使用从第一个viewController传递的闭包。
以下是如何执行此操作的示例。在prepare(for:)
中,将闭包processTipSettings
设置为指向处理函数。在这种情况下,changeSegmentLabels
将采用提示设置并使其成为分段控件的标签。
当用户点击保存时,按钮的@IBAction将使用textFieldLabels中的值调用processTipSettings
,changeSegmentLabels
将更新分段控件中的标题。
<强> ViewController.swift:强>
import UIKit
class ViewController: UIViewController {
@IBOutlet var tipsSegmentedController: UISegmentedControl!
func changeSegmentLabels(labels: [String?]) {
if labels.count == 3 {
for i in 0..<3 {
tipsSegmentedController.setTitle(labels[i], forSegmentAt: i)
}
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "settings" {
if let dvc = segue.destination as? SettingsViewController {
dvc.processTipSettings = changeSegmentLabels
}
}
}
}
<强> SettingsViewController.swift 强>
class SettingsViewController: UIViewController {
@IBOutlet weak var tip1: UITextField!
@IBOutlet weak var tip2: UITextField!
@IBOutlet weak var tip3: UITextField!
// Call this closure when Save is pressed.
var processTipSettings: (([String?]) -> ())?
@IBAction func saveSettings(_ sender: UIButton) {
processTipSettings?([tip1.text, tip2.text, tip3.text])
_ = self.navigationController?.popViewController(animated: true)
}
}