在按钮请求时隐藏和显示tableview中的部分

时间:2017-05-15 08:03:28

标签: swift uitableview button uialertcontroller sections

我有一个包含不同部分的tableview。在加载视图后,我隐藏了该部分并在该部分上创建了一个覆盖按钮,在单击它时会显示一个警告框,要求输入管理员密码

问题:现在,我试图在用户输入正确的密码并隐藏按钮后显示最初隐藏的部分。 需要帮助

最初将第1部分设置为隐藏并创建叠加按钮:

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    if section == 1 {

        let enableButton = UIButton(frame: CGRect(origin: CGPoint(x: 320, y: 160), size: CGSize(width: 130, height: 30)))
        enableButton.backgroundColor = UIColor.clear
        enableButton.setTitle("Enable Section", for: .normal)
        enableButton.setTitleColor(.blue, for: .normal)
        enableButton.addTarget(self, action: #selector(ConfigTableViewController.enableButtonClicked), for: .touchUpInside)
        self.view.addSubview(enableButton)

        return 0
    }

    else if section == 2 {
        return 2
    }
    else if section == 3 {
        return 2
    }

    return 1
}

单击按钮时,此函数调用:

func enableButtonClicked() {

    let alertController = UIAlertController(title: "Admin Password", message: "Please input admin password", preferredStyle: .alert)

    let enable = UIAlertAction(title: "Enable", style: .default) { (_) in
        let field = alertController.textFields?[0].text
        if let x = UserDefaults.standard.string(forKey: "initial admin password"), x == field {


        }
        else{

            let wrongPwd = UIAlertController(title: "Wrong Admin Password", message: nil, preferredStyle:UIAlertControllerStyle.alert)
            wrongPwd.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: nil))
            self.present(wrongPwd, animated: true, completion: nil)
        }
    }

    let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (_) in }

    alertController.addTextField { (textField) in
        textField.placeholder = "Admin Password"
        textField.isSecureTextEntry = true
    }

    alertController.addAction(enable)
    alertController.addAction(cancelAction)

    self.present(alertController, animated: true, completion: nil)
}

1 个答案:

答案 0 :(得分:1)

要解决您的问题,我建议您创建StatusId,以检查您的flag是否正确。

1.假设你有一面旗帜:

PassWord
  1. 只需将按钮拖到您的单元格,然后创建var correctPasswordFlag : Bool = false // initially assume it wrong IBOutlet并将目标选择器添加到此方法中:

    func enableButtonClicked(){

    configEnableButton
  2. 希望这可以帮助您解决问题。 享受编码和继续学习。