AlertController的代码没有正确行事

时间:2016-01-29 02:18:19

标签: ios iphone swift uialertcontroller

我有一个警告弹出窗口,其中textField请求用户输入数据。我终于得到了textField来将数据转换到我需要的地方,但是我不能再保存这个项了。如果alertAction没有附加处理程序函数,我可以毫无问题地调用save func。现在我已经拥有"设置"动作从文本字段转换数据,它将不再允许我调用该函数。它给出了错误"表达式解析为未使用的函数"。并且,出于某种原因,它希望我拥有自己。在所有数据之前...查看代码。

AlertController:

@IBAction func saveButton(sender: AnyObject) {
    if (item?.slminqty == nil) {
    let alert = UIAlertController(title: "Minimun Qty", message: "Please set minimun Qty. for pantry.", preferredStyle: UIAlertControllerStyle.Alert)

        alert.addTextFieldWithConfigurationHandler { (textField: UITextField!) -> Void in
        textField.placeholder = "Minimun Qty."
        textField.keyboardType = .NumbersAndPunctuation
        textField.clearButtonMode = UITextFieldViewMode.WhileEditing
    }

    alert.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Default, handler: {saveitem}()))
    alert.addAction(UIAlertAction(title: "Set", style: UIAlertActionStyle.Default, handler: {(action) -> Void in
        let textField = alert.textFields![0].text!
        self.item?.slminqty = textField
        if self.item?.slminqty != nil{
        //if I place saveitem here it wants self.saveitem and gives error.
        }
        }))

        self.presentViewController(alert, animated: true, completion: nil)

    }else{

        if item != nil {
            edititems()
            print(item!.slminqty!)
        } else {
            createitems()
        }

        dismissVC()
    }
}

保存功能:

func saveitem(sender: AnyObject) {

    if item != nil {
        edititems()

    } else {
        createitems()
    }
    print(item?.slminqty)

    dismissVC()
}

我显然是以极其困难的方式做到这一点,或者总的来说是错误的。如何将textField数据转换为item.slminqty并保存项目?

1 个答案:

答案 0 :(得分:1)

是的,您必须使用自引用来调用saveitems,因为两者都有不同的范围。你可能应该在里面使用self.saveitem()