仅当从警报调用时,如何向第二个向下钻取View Controller添加按钮?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仅当从警报调用时,如何向第二个向下钻取View Controller添加按钮?相关的知识,希望对你有一定的参考价值。

我是ios开发的新手,但是取得了进步。对我来说,编程有点太多了。

  1. 我在第一个视图中有一个警告按钮(ok)。
  2. 点击确定,我可以调用现有的员工表视图,该视图也允许搜索员工。在tableview中点击一行会切换到包含员工详细信息的详细信息视图。 (此表视图和详细视图已作为独立的导航菜单选项存在)。
  3. 现在我需要动态添加一个按钮到详细信息视图以选择特定员工,但仅限于从警报按钮调用(ok)。

// Code in alert
let alertController = UIAlertController(title: "Action Taken", message: scan.stringValue, preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: {(alert: UIAlertAction!) in gotoTableView()}))
alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler:nil))
present(alertController, animated: true, completion: nil)

func gotoTableView () {
    let Employee1TableViewController = self.storyboard?.instantiateViewController(withIdentifier: "viewFromScanner")

    // the code below helped add searchbar to the table view. Witout this, the tableview didn't have search capability
    self.navigationController!.pushViewController(Employee1TableViewController!, animated: true)
}

// Code in tableview that the alert calls, which in turn cals a Segue to detail screen
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "showDetail", sender: indexPath)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let rowSelected = (sender as! IndexPath).row
    if let destinationVC = segue.destination as? EmpViewController {
        destinationVC.empIdText = getSwiftArrayFromPlist()[rowSelected]["empid"]
        destinationVC.firstNameText = getSwiftArrayFromPlist()[rowSelected]["firstname"]
        destinationVC.lastNameText = getSwiftArrayFromPlist()[rowSelected]["lastname"]

    // code goes on further to list other employee details
答案

您可以尝试为此设置一个bool

 var currentCaller:Bool?

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let rowSelected = (sender as! IndexPath).row
    if let destinationVC = segue.destination as? EmpViewController {
        destinationVC.empIdText = getSwiftArrayFromPlist()[rowSelected]  
        destinationVC.calledFromAlert = self.currentCaller
     }
 }

要么

 let Employee1TableViewController = self.storyboard?.instantiateViewController(withIdentifier: "viewFromScanner") as! Employee1TableViewController
Employee1TableViewController.calledFromAlert = true

否则默认为false

 class Employee1TableViewController:TableViewController
 {
   var calledFromAlert:Bool

 }

以上是关于仅当从警报调用时,如何向第二个向下钻取View Controller添加按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据先前的选择根据向下钻取 selectInput() 显示动态更改的地图?

html向下钻取下拉选定值未插入MYSQL

从第二个警报视图按“确定”时,进度 hud 未显示

VBA - Excel列表框 - 在向第二个列表框添加项目时查找重复项

从第一个 UIAlertController 打开第二个 UIAlertController

在 Scala Play 框架中映射 OneToMany 不向第二个表插入数据