gpt4 book ai didi

ios - 多个 View Controller segue 和执行函数 swift

转载 作者:行者123 更新时间:2023-11-28 06:59:14 25 4
gpt4 key购买 nike

您好,我是在 swift 上编写代码的新手,我一直在网上寻找如何做到这一点,但我还没有找到任何示例来帮助我解决我的困境。如果有人知道如何帮助我,请回复。

我正在使用两个 View Controller :在第一个 viewcontroller(1) 上,我有一个带有应用程序名称的标签,在它下面我放置了两个按钮。

一个说英语,另一个说西类牙语。 (我已经将 Storyboard上的每个按钮与一个 segue 连接到具有自己的 cocoatouch swift 文件的第二个 View Controller )

在第二个 View Controller 上我有一个标签。 (标签A)我在文件中放置了两个函数。

 func englishone (){
labelA.text = "Welcome" }

func spanishone (){
labelA.text = "Bienvenido"}

我希望 func englishone 在我按下第一个 ViewController 上的英语按钮时在第二个 View Controller 上执行,并在我按下西类牙语按钮时执行 func spanishone。

我能够使用的唯一解决方案是创建第三个 View Controller 。 SecondViewController 是英文函数,ThirdViewController 是西类牙文函数。但是使用这个解决方案,如果我在第一个 Viewcontroller 中创建任何新的语言按钮,我将不得不创建相同数量的额外 viewcontroller。 (这不是有效的设计或编码策略。)

我认为我应该在 secondeviewController 上使用 if 语句,检查是否按下了英语按钮或是否按下了西类牙语按钮。但是我不太确定该怎么做。

请帮帮我。

最佳答案

从你的第一个 View Controller ,你可以实现prepareForSegue(_:sender:) 方法。

您必须向 Storyboard中的所有转场添加转场标识符,并且在 prepareForSegue(_:sender:) 方法中您应该请求 sender.identifier 进行检查如果它推送到西类牙语、英语或其他语言。

然后,在您的第二个 View Controller 中,您必须添加一个 var 来保存您正在使用的语言。您将使用该 var 来定义要执行的方法。

因此,您的第二个 View Controller 需要添加一个包含可用语言的枚举,并有一个 var 来存储所选语言:

enum AvailableLanguages: Int {
case Spanish
case English
case German
case French
}

var language : AvailableLanguages!

从第一个 View Controller 开始,您应该在 prepareForSegue(_:sender:) 方法中设置第二个 View Controller 的 var 值,使用 segue.destinationViewController 属性访问它.您的 prepareForSegue 方法应该如下所示:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
switch segue.identifier! {
case "englishSegue": (segue.destinationViewController as! LoginViewController).language = .English
case "spanishSegue": (segue.destinationViewController as! LoginViewController).language = .Spanish
case "frenchSegue": (segue.destinationViewController as! LoginViewController).language = .French
case "germanSegue": (segue.destinationViewController as! LoginViewController).language = .German
default: (segue.destinationViewController as! LoginViewController).language = .English //Or your default language
}
}

最后,一旦你的第二个 View Controller 出现,你应该读取 var 的值来选择要执行的方法:

switch segue.identifier! {
case "englishSegue": englishone()
case "spanishSegue": spanishone()
case "frenchSegue": frenchone()
case "germanSegue": germanone()
default: englishone() //Or your default language
}

我认为这是一个练习项目,但如果它是一个真正的项目,支持多语言的正确方法是使用 iOS 国际化。阅读此文档以了解如何将您的应用程序国际化:Apple Internationalization Doc

关于ios - 多个 View Controller segue 和执行函数 swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32491343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com