swift - 从另一个视图控制器访问分段控件选定的索引
问题描述
我正在开发一个当前有 2 个视图控制器的应用程序。在第二个视图控制器(我用于设置)中,我使用分段控件来确定游戏的难度。设置视图控制器的目的是更改主视图控制器标签。我遇到的问题是我找不到将段控件的选定索引值从第二个视图控制器带到主视图控制器的方法。
这是设置屏幕视图控制器:
public class SettingsScreen: UIViewController {
@IBOutlet weak var levelPick: UISegmentedControl! // need to use this
@IBOutlet weak var operationPick: UISegmentedControl!
public override func viewDidLoad() {
super.viewDidLoad()
}
}
和主要的:
class MainScreen: UIViewController {
@IBOutlet weak var displayText: UILabel!
public override func viewDidLoad() {
super.viewDidLoad()
}
// how it should work:
func setLevel() {
switch SettingsScreen().levelPick.selectedSegmentIndex {
// easy
case 0:
displaytext.text = "test1"
// medium
case 1:
displaytext.text = "test2"
// hard
case 2:
displaytext.text = "test3"
default:
break
}
}
@IBAction func Roll(_ sender: UIButton) {
setLevel()
}
}
解决方案
由于您指的是SegmentedIndex
基于某些设置更改指定的引用用户,因此您可以利用UserDefaults
存储该索引以供以后检索。这会更简单,但这也取决于您实际追求的目标。
public class SettingsScreen: UIViewController {
@IBOutlet weak var levelPick: UISegmentedControl! // need to use this
@IBOutlet weak var operationPick: UISegmentedControl!
public override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func levelPickPressed(_ sender: UISegmentedControl) {
switch levelPick.selectedSegmentIndex {
case 0: // Easy
defaults.set(0, forKey: "levelPick_Level")
case 1: // Med
defaults.set(1, forKey: "levelPick_Level")
case 2: // Hard
defaults.set(2, forKey: "levelPick_Level")
default:
break
}
}
}
然后在您的 MainScreen 代码中
func setLevel() {
levelPick = UserDefaults.standard.integer(forKey: "levelPick_Level")
switch levelPick {
// easy
case 0:
displaytext.text = "test1"
// medium
case 1:
displaytext.text = "test2"
// hard
case 2:
displaytext.text = "test3"
default:
break
}
}
推荐阅读
- ios - Flutter web:当应用程序安装到主屏幕时,如何在IOS中修复白页
- azure - 如何在 Azure Function App 的 PowerShell 脚本中获取 Azure AD 用户列表?
- mysql - 在 MySql 8 中转换字典
- .htaccess - 重定向 - 总共 4 个参数
- spartacus-storefront - 如何在 SAP Spartacus 店面使用令牌调用自定义端点?
- node.js - 无法在 digitalocean 上引导 antd pro 项目
- c++ - 线程成员相对于原子布尔成员的排序
- python - Python AI 助手需要多个输入才能获得输出
- excel - 如何根据 if 语句更新单元格?
- matrix - 如何从视图矩阵确定相机位置?