所以我有一个UItextfield和一个UIButton我想知道是否有一种方法可以在实例变量中按下按钮后保存文本,这样我就可以在其他类中使用它了。 我想要做的是让用户在屏幕1的文本字段中输入一些文本然后当用户点击按钮我想带他到屏幕2然而在该屏幕的类2我想知道什么文本用户输入以便相应地显示数据。 现在我只有一个按钮的动作功能,我在其中访问文本并将其保存到实例变量,但是当我在其他类中调用它时它是空的,因为我将它初始化为空。那么请有人帮助我并告诉我如何解决这个问题。 谢谢!
这是第一个屏幕的代码
var searchRecipe = ""
@IBAction func SearchButton(sender: UIButton) {
if let recipe = RecipeSearchBar.text {
searchRecipe = recipe
}
}
这是第二个屏幕的代码。我在这个屏幕的第一个屏幕上连接了按钮,所以当用户点击按钮时,他就到了这里。
var recipeName:[String] = []
var imageURL:[String] = []
var timeInSeconds:[Float] = []
func apiCall()
{
//search recipe API call
var searchRecipe = ""
searchRecipe = RecipesViewController().searchRecipe
print (searchRecipe) //prints nothing
endpoint = "http://api.yummly.com/v1/api/recipes?_app_id=apiId&_app_key=apiKey&q=\(searchRecipe)" //this is where I want to use the searchRecipe text from class 1
}
答案 0 :(得分:1)
我个人会做以下事情(基于我对您的问题的解释):
请注意,我理所当然地认为您正在实施基于视图控制器的导航,您知道IBOutlets,IBActions& Segues是
RecipeSearchBar
并将其连接到相关文本
字段。value
串; toSecondViewController
" 在您的情况下:
@IBAction func SearchButton(sender: UIButton) {
if let recipe = RecipeSearchBar.text {
searchRecipe = recipe
}
//If you are navigating into a new view view controller
//here you need to call self.presentViewController(...)
}
在此操作中,您将致电
self.presentViewController
显示你的第二个视图控制器,但你必须做最后一个 非常重要的一步:将UITextField的值传递给实例 这将保存第二个视图控制器
要实现此目的,请在第一个视图控制器中覆盖prepareForSegue
并共享UITextField值。一旦调用self.presentViewController进行进一步实现,就会触发此方法。
//Did not tested the code but should just be ok
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "toSecondViewController")
{
//Create the instance
let secondViewController = segue.destinationViewController
//Set the value
secondViewController.value = searchRecipe;
}
}
你现在好了。 希望这有帮助,如果有的话,为其他人标记问题。 再见