1. 声明
// this delegate needs a @objc,because @optional is only for objective-c,not for swift
@objc protocol DetailViewControllerDelegate : NSObjectProtocol {
optional func changeItem(forusermodel usermodel: usermodel?)
}
2.代理的点击事件
func onChangeButtonClick(sender: UIButton!) {
if (usermodel != nil) {
usermodel!.userName = "ChangeName"
usermodel!.email = "robinson_911@163.com"
// changeItem needs to add a ? to the end,before (),because
// this function is optional
// delegate? 表示可能没有代理,而changeItem?表示方法可能没有实现,这样写就算没有实现也没有问题
delegate?.changeItem?(forusermodel: usermodel)
self.navigationController!.popViewControllerAnimated(true)
}
}
3. 实现
class RootViewController:UITableViewController,DetailViewControllerDelegate{}
func changeItem(forusermodel usermodel: usermodel?) {
var index = 0
for index = 0; index < dataSource.count; index++ {
let model = dataSource[index] as? usermodel
if model!.userID == usermodel!.userID {
model!.phone = usermodel!.phone
model!.email = usermodel!.email
tableView.reloadRowsAtIndexPaths([currentIndexPath!],withRowAnimation: UITableViewRowAnimation.Fade)
break
}
}
}