【发布时间】:2019-10-14 06:22:24
【问题描述】:
我有三个视图控制器。在这里,我想从第三个 viewcontroller 完成按钮将第二个 viewcontroller 文本字段值添加到第一个 viewcontroller tableview 标签。 我可以在 popviewcontroller 时使用委托将第二个 viewcontroller 文本字段添加到第一个 viewcontroller 标签,但我无法从第三个 viewcontroller 按钮添加。 请在代码中帮助我。
这是我的代码:
这是我的第一个VC代码:
import UIKit
class EmployeeViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, EmployeeDelegateProtocol {
var namesArray = [String]()
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
}
func sendDataToEmployeeViewController(myData: String) {
self.namesArray.append(myData)
tableView.reloadData()
print(namesArray)
print("in delegate method \(namesArray)")
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return namesArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! EmployeeTableViewCell
cell.empName.text = namesArray[indexPath.row]
return cell
}
@IBAction func addButtonClicked(_ sender: Any) {
let empProfileVC = self.storyboard!.instantiateViewController(withIdentifier: "EmployeeProfileViewController") as! EmployeeProfileViewController
empProfileVC.delegate = self
self.navigationController?.pushViewController(empProfileVC, animated: true)
}
}
这是我的第二个VC代码:
在使用 pop 时它正在工作
import UIKit
protocol EmployeeDelegateProtocol {
func sendDataToEmployeeViewController(myData: String)
}
class EmployeeProfileViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UINavigationControllerDelegate,UIImagePickerControllerDelegate {
var delegate: EmployeeDelegateProtocol?
@IBOutlet weak var firstNameTextField: UITextField!
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
@objc func saveButtonClicked(){
print("button clicked")
self.delegate?.sendDataToEmployeeViewController(myData: firstNameTextField.text!)
//self.navigationController?.popViewController(animated: true)
}
}
但我想从 thirdVc 完成按钮发送值:
import UIKit
class EmployeeProfilecreatedPopUpViewController: UIViewController {
var cellProfile: EmployeeProfileViewController?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func doneButtonTapped(_ sender: Any) {
print("done tapped")
let empVC = self.storyboard!.instantiateViewController(withIdentifier: "EmployeeViewController") as! EmployeeViewController self.navigationController?.pushViewController(empVC, animated: true)
}
}
请建议我如何从 thirdvc 完成按钮发送。
【问题讨论】:
-
能否请您从第二个视图控制器显示导航代码到第三个视图控制器?从任何按钮或如何?
-
@VRAwesome 第二个视图控制器有保存按钮,我已经将 segue 提供给第三个视图控制器
-
好的....但是您在问题上粘贴的代码显示了其他内容(可能是您正在测试)。
-
@VRAwesome 我被困住了两天,你说我正在测试 tableview 中没有实际保存按钮,第二个和第一个 viewcontroller 中有太多代码我没有粘贴整个代码......实际上虽然我正在使用 pop 到 firstVC 它的工作,但我的问题是同样的事情想要从 thirdVC 完成按钮
标签: ios swift uitableview uibutton