SWIFT初学者
我有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
}
}
我没有找到类似的东西,请帮助!
1条答案
按热度按时间carvr3hs1#
您几乎肯定不希望为此使用协议/委托模式...
一般来说,您希望在创建控制器(
GameViewController
)时将数据 * 传递 * 给它,然后显示它。在
GameViewController
中添加一个属性来 * 接收 * 数据(在本例中是一个字符串):然后,当您点击
MainViewController
中的按钮以调用startGame()
时:现在,您已经将输入到
wordTf
中的文本在游戏视图控制器中设置为gameWord
,并且可以按照自己的意愿使用它。