【发布时间】:2018-05-01 18:14:12
【问题描述】:
我有 View1,其中按钮有标题,我通过传递按钮标题字符串成功地转到 View2,该字符串也将分配给 View 2 按钮。 现在当用户从 View2 回到 View1 时, View1 按钮没有任何价值。如何将按钮值传递给 View1?
我尝试了委托方法..但没有成功:
已编辑
视图1
class PatientBreifInfoViewController: UIViewController, TasksViewDelegate {
var passName: String!
@IBOutlet weak var patientName: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
patientName.setTitle(passName, forState: .Normal)
}
func setName(name: String) {
patientName.setTitle(name, forState: .Normal)
print("View1")
print(name)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "toTasks") {
let controller = segue.destinationViewController as! TasksViewController
controller.delegate = self
controller.passName = passName
}
}
}
视图2
protocol TasksViewDelegate: class {
func setName(patientName: String)
}
class TasksViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var passName : String!
@IBOutlet weak var backButton: UIButton!
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var patientName: UIButton!
weak var delegate: TasksViewDelegate?
override func viewDidLoad() {
super.viewDidLoad()
patientName.setTitle(passName, forState: .Normal)
}
@IBAction func backButton(sender: AnyObject) {
delegate!.setName(passName)
self.navigationController?.popViewControllerAnimated(true)
}
}
【问题讨论】:
-
在您发布的代码中
passName从未设置为仅声明。你有没有给它一个价值。当您在setName中打印名称时,输出是什么?
标签: ios swift uiviewcontroller