在前面, 咱们知道用回调函数进行传参, 但那只是传参的一种方式, 如今让咱们来看看第二种传参的方法.数组
1.全局界面
markdown
2.界面细节
ide
PS: 下面这个操做须要在编码准备里的ViewController定义好@IBAction func saveToMainViewController(segue: UIStoryboardSegue) {} 方法才会显示函数
在真正写代码以前, 咱们须要关联控件, 以及声明变量.
1.ViewController优化
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var models = ["张三", "李四", "王五", "陈六", "赵七"]
@IBOutlet var myTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
myTableView.delegate = self
myTableView.dataSource = self
}
// 声明一个方法, 从TableViewControllerOne回传数据到ViewController
@IBAction func saveToMainViewController(segue: UIStoryboardSegue) {
// 1.获取到TableViewControllerOne而且赋给变量data
let data = segue.sourceViewController as! TableViewControllerOne
// 2.获取到TableViewControllerOne里的index索引, 而且把TableViewControllerOne里的editModel存到对应的models里
models[data.index!] = data.editModel!
// 3.刷新TableView
myTableView.reloadData()
}
2.TableViewControllerOneui
@IBOutlet var editTextField: UITextField!
var index: Int?
var editModel: String?
var modelArray: [String]!
override func viewDidLoad() {
super.viewDidLoad()
//
editTextField.text = modelArray[index!]
}
1.ViewController编码
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return models.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("tableCell", forIndexPath: indexPath) as! UITableViewCell
cell.textLabel?.text = models[indexPath.row]
return cell
}
// 操做体验优化
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// 1.每当点中TableViewCell以后, 都会恢复原来的样式
myTableView.deselectRowAtIndexPath(indexPath, animated: true)
}
// 重写连线
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// 1.在Storyboard里给连线命名为edit
if segue.identifier == "edit" {
// 2.声明path变量为myTableView为当前所点击的indexPath
var path = myTableView.indexPathForSelectedRow()
// 3.获取到TableViewControllerOne而且赋给变量detailTableViewController
var detailTableViewController = segue.destinationViewController as! TableViewControllerOne
// 4.设置detailTableViewController里的变量index为myTableView当前所点击的indexPath
detailTableViewController.index = path?.row
// 5.设置detailTableViewController里的modelArry数组为myTableView的models数组
detailTableViewController.modelArray = models
}
}
2.TableVIewControllerOnespa
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// 1.判断当前所展现的tableViewCell是否为条件所示
if indexPath.section == 0 && indexPath.row == 0 {
// 2.若是成立, editTextField就为第一响应者
editTextField.becomeFirstResponder()
}
// 体验优化
// 3.判断结束以后, 若是误点中Cell, 那么就取消选中Cell
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
// 重写连线
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// 1.判断segue的indentifier是否为save
if segue.identifier == "save" {
// 2.若是判断为真, 那么就把editTextField的内容存入到editModel
editModel = editTextField.text
}
}
好了, 此次咱们就讲到这里, 下次咱们继续~~scala