import UIKit
class ListTableViewController: UITableViewController {
var personList = [Person]()
override func viewDidLoad() {
super.viewDidLoad()
loadData{ (list) in
print("完成加载")
//拼接数组
self.personList += list
self.tableView.reloadData()
}
}
private func loadData(completion:@escaping(_ list:[Person])->())->(){
DispatchQueue.global().async {
print("开始加载数据。。。")
Thread.sleep(forTimeInterval: 1)
var arrayM = [Person]()
for i in 0..<20{
let p = Person()
p.name = "zhangsang - \(i)";
p.phone = "1860" + String(format:"%06d",arc4random_uniform(100000))
p.title = "boss"
arrayM.append(p)
}
DispatchQueue.main.async(execute: {
//回调异步获取的结果
completion(arrayM)
})
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return personList.count
}
@IBAction func newPerson(_ sender: Any) {
performSegue(withIdentifier: "list2Detail", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc = segue.destination as? DetailViewController
if let indexPath=sender as? IndexPath {
vc?.person = personList[indexPath.row]
vc?.completionCallBack = {
self.tableView.reloadRows(at: [indexPath], with:.automatic)
}
}else{
vc?.completionCallBack = { [weak vc] in
guard let p = vc?.person else {
return
}
self.personList.insert(p, at: 0)
self.tableView.reloadData()
}
}
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellid", for: indexPath)
cell.textLabel?.text = personList[indexPath.row].name
cell.detailTextLabel?.text = personList[indexPath.row].phone
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
performSegue(withIdentifier: "list2Detail", sender: indexPath)
}
}
import UIKit
class DetailViewController: UITableViewController {
@IBOutlet weak var nameText: UITextField!
@IBOutlet weak var phoneText: UITextField!
@IBOutlet weak var titleText: UITextField!
var person: Person?
var completionCallBack:(()->())?
override func viewDidLoad() {
super.viewDidLoad()
if person != nil {
nameText.text = person?.name
phoneText.text = person?.phone
titleText.text = person?.title
}
}
@IBAction func savePerson(_ sender: Any) {
if person == nil {
person = Person()
}
person?.name = nameText.text
person?.phone = phoneText.text
person?.title = titleText.text
completionCallBack?()
navigationController?.popViewController(animated: true)
}
}
import UIKit
class Person: NSObject {
var name: String?
var phone:String?
var title:String?
}
分享到:
相关推荐
个人通信录管理,管理个人通信录信息,Delphi6+Access2003
在日常生活中,个人通信录是我们不可少的,不管是纸式的个人通信录 还是我们手机中的个人通信录,查寻是其最基本的操作,几乎所有的操作都是在查寻的基础上进行的,所以,查寻时间的快慢很大程度上决定了整个通信录...
个人通信录记录了同学(包含一起上学的学校名称)、同事(包含共事的单位名称)、朋友(包含认识的地点)、亲戚(包含称呼)等与本人有关人员的数据集。 要求: (1)提供录入个人信息、修改个人信息(姓名和出生...
个人通信录 java 写的,压缩包中有源代码和jar程序 ----济南大学 信息学院
要求:开发一个个人通信录管理系统,用于记录同学(包含一起上学的学校名称)、同事(包含共事的单位名称)、朋友(包含认识的地点)、亲戚(包含称呼)等与本人有关人员的数据集,要求实现以下功能: (1)提供录入...
个人通信录记录了同学(包含一起上学的学校名称)、同事(包含共事的单位名称)、朋友(包含认识的地点)、亲戚(包含称呼)与本人的关系,并且每个人都包含了基本信息姓名、出生日期、电话和email地址,通过调用...
用java写的个人通信录,具有图形界面,能实现对个人信息的录入、查询、删除、修改、排序等功能,可以分别输出同学、朋友、同事、亲戚以及全体人员的信息。 详情:个人通信录记录了同学(包含一起上学的学校名称)、...
宽乐通信个人通信录操作手册样本.doc
我是个初学者哈,自己做着玩的,错误有点多,不完整,望给与意见,
个人通信录管理系统.c
这是一个.NET程序开发的个人通信录,有报告。
jsp个人通信录系统课程设计.docjsp个人通信录系统课程设计.docjsp个人通信录系统课程设计.doc
sql建立数据库 sql建立个人通信录数据库
VC个人通信录系统 //开发环境VS2008+WIN7 //数据库为ACCESS
个人通信录管理系统课程设计
使用C#2005和SQLServer2000开发的个人通信录,含完整源代码和数据库备份,实现了信息的显示,灵活构建查询条件进行查询。
本通信录管理系统就是利用asp运行环境开发而成的,主要实现了对通信录信息的增、删、改、查等功能,查询支持多条件过滤、分页,每个用户有各自的通信录,存储在同一数据库中。用户要登录才能对通信录进行操作,通信...
通信录的录入、编辑、保存、查询、打印(输入到WORD)等功能
c语言个人通信录标准管理系统课程设计报告.doc
C课程设计报告——个人通信录管理系统