我有 2 个 ViewController,想在 secondVC(一些标签)中显示我在 firstVC(一些文本字段)中写的内容
我的第一个VC:
protocol DataDelegate {
func getWord(word:String)
}
class MainViewController: UIViewController {
let mainView = MainView()
var delegate: DataDelegate?
override func viewDidLoad() {
super.viewDidLoad()
self.view = mainView
addTargets()
}
func addTargets() {
mainView.startButton.addTarget(self, action: #selector(startGame), for: .touchUpInside)
}
@objc func startGame() {
guard mainView.wordTf.text!.count > 7 else {
print("Slishkom korotkoe slovo")
return
}
let vc = GameViewController()
vc.modalPresentationStyle = .fullScreen
delegate?.getWord(word: mainView.wordTf.text!)
self.present(vc, animated: true)
}
}
我的第二个VC:
class GameViewController: UIViewController {
let gameView = GameView()
override func viewDidLoad() {
super.viewDidLoad()
self.view = gameView
addTargets()
}
func addTargets() {
gameView.backButton.addTarget(self, action: #selector(dismissSelf), for: .touchUpInside)
}
@objc func dismissSelf() {
self.dismiss(animated: true)
}
}
extension GameViewController: DataDelegate {
func getWord(word: String) {
gameView.bigWord.text = word
}
}
我没有找到类似的东西,请帮忙!
一般来说,你想在创建它时
传递数据给你呈现的控制器(你的GameViewController
),然后呈现它。
GameViewController
添加属性以
receive数据(在本例中为字符串):
class GameViewController: UIViewController {
var gameWord: String = ""
// all the rest of your code
}
然后,当您点击
MainViewController
中的按钮来调用
startGame()
:@objc func startGame() {
guard theWord = mainView.wordTf.text, theWord.count > 7 else {
print("Slishkom korotkoe slovo")
return
}
let vc = GameViewController()
vc.modalPresentationStyle = .fullScreen
// "pass" the data here
vc.gameWord = theWord
self.present(vc, animated: true)
}
您现在已经在游戏视图控制器中将
wordTf
中输入的文本设置为
gameWord
,您可以随意使用它。