`

个人通信录

    博客分类:
  • ios
阅读更多
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?
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics