我的代码如下。当我按下“完成”或“取消”按钮时,它不起作用。我做了一些调试,并且delegate
是nil
即使我设置它。请帮忙 - 谢谢。视图控制器委托返回无
class ViewController: UIViewController,EditViewControllerDelegate {
@IBOutlet weak var label: UILabel!
//页面跳转时
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "EditView" {
//通过seque的标识获得跳转目标
let controller = segue.destinationViewController as! EditViewController
//设置代理
controller.delegate = self
//将值传递给新页面
controller.oldInfo = label.text
}
}
func editInfo(controller:EditViewController, newInfo:String){
label.text = newInfo
//关闭编辑页面
controller.presentingViewController!.dismissViewControllerAnimated(true, completion: nil)
}
func editInfoDidCancer(controller:EditViewController){
//关闭编辑页面
controller.presentingViewController!.dismissViewControllerAnimated(true, completion: nil)
}
}
import UIKit
protocol EditViewControllerDelegate {
func editInfo(controller:EditViewController, newInfo:String)
func editInfoDidCancer(controller:EditViewController)
}
class EditViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
var delegate:EditViewControllerDelegate?
var oldInfo:String?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
if oldInfo != nil{
textField.text = oldInfo
}
}
@IBAction func done(sender: AnyObject) {
delegate?.editInfo(self, newInfo: textField.text!)
}
@IBAction func cancel(sender: AnyObject) {
delegate?.editInfoDidCancer(self)
}
}
你设置的'prepareForSegue'方法中设置断点?你确定'代表'是否曾经设置?也许你的segue不叫'EditView',但稍有不同? –
只要注意到你有一个'editInfoDidCancer'方法,大概这应该是'editInfoDidCancel'? – mttrb
谢谢,我试过了,代表没有设置。我怎么解决这个问题? –