按下UIButton时,Swift将文本保存到实例/全局变量

时间:2016-11-08 17:22:37

标签: swift uibutton uitextfield

所以我有一个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
}

1 个答案:

答案 0 :(得分:1)

我个人会做以下事情(基于我对您的问题的解释):

  

请注意,我理所当然地认为您正在实施基于视图控制器的导航,您知道IBOutlets,IBActions& Segues是

  1. 在第一个视图控制器中创建一个IBOutlet属性 UITextField命名为RecipeSearchBar并将其连接到相关文本 字段。
  2. 在第二个视图控制器中创建一个类型的变量value 串;
  3. 将故事板segue标识符更改为" toSecondViewController"
  4. 然后在第一个视图控制器中创建一个要调用的IBAction 当按下UIButton时。
  5. 在您的情况下:

    @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;
            }
        }
    

    你现在好了。 希望这有帮助,如果有的话,为其他人标记问题。 再见