代码备个份
Github:https://github.com/Gamin-fzym/LinkmanDemo
目录
AppDelegate
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds);
window?.backgroundColor = UIColor.white;
let home = HomeViewController();
let nav = UINavigationController(rootViewController: home);
window?.rootViewController = nav;
window?.makeKeyAndVisible();
return true
}
}
HomeViewController
import UIKit
class HomeViewController: UIViewController {
let navRightBut: UIButton = UIButton();
override func viewDidLoad() {
super.viewDidLoad()
title = "首页";
navRightBut.frame = CGRect(x: 0, y: 0, width: 88, height: 44);
navRightBut.setTitle("联系人", for: .normal);
navRightBut.setTitleColor(UIColor.blue, for: .normal);
navRightBut.titleLabel?.font = UIFont.systemFont(ofSize: 15);
navRightBut.tag = 290;
navRightBut.addTarget(self, action: #selector(tapRightButtonAction(sender:)), for: .touchUpInside);
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: navRightBut);
}
@objc func tapRightButtonAction(sender: UIButton) -> () {
if (sender.tag == 290) {
print("点击联系人按钮");
let linkmamList = LinkmanListViewController();
navigationController?.pushViewController(linkmamList, animated: true);
}
}
}
LinkmanListViewController
import UIKit
class LinkmanListViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
private var dataMArr: [LinkmanModel] = [];
private var page: Int = 0;
override func viewDidLoad() {
super.viewDidLoad()
title = "联系人列表";
setupTableViewUI();
}
func setupTableViewUI() {
// 设置透明,默认为NO控制器中y=0实际效果上=64,设置为YES时控制器中y=0实际效果上y=0
navigationController?.navigationBar.isTranslucent = false;
if #available(iOS 11.0, *) {
tableView.contentInsetAdjustmentBehavior = .never
tableView.insetsContentViewsToSafeArea = false;
} else {
self.automaticallyAdjustsScrollViewInsets = false
}
tableView.separatorStyle = UITableViewCell.SeparatorStyle.none;
tableView.estimatedRowHeight = 100;
tableView.rowHeight = UITableView.automaticDimension;
// 纯代码的cell
//tableView.register(LinkmanListCell.self, forCellReuseIdentifier: "LinkmanListCell");
// xib的cell
tableView.register(UINib(nibName: "LinkmanListCell", bundle: nil), forCellReuseIdentifier: "LinkmanListCell");
tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {
self.refresh();
});
tableView.mj_footer = MJRefreshBackNormalFooter(refreshingBlock: {
self.refreshMore();
});
refresh();
}
// 下拉刷新
func refresh() {
page = 0;
dataMArr.removeAll();
moniDataAction();
}
// 上拉加载
func refreshMore() {
page += 1;
moniDataAction();
}
// 模拟数据
func moniDataAction() {
DispatchQueue.global().async { [weak self] in
Thread.sleep(forTimeInterval: 1);
var mnArr: [LinkmanModel] = [];
for i in 0..<20 {
let model = LinkmanModel();
model.name = "姓名" + "\(i)";
let num = arc4random()/100000;
model.phone = "185023" + String(format: "%05d", num);
model.work = "工作" + "\(i)";
if (i == 2) {
model.work = nil;
}
mnArr.append(model);
}
self?.dataMArr += mnArr;
self?.tableView.mj_header?.endRefreshing();
self?.tableView.mj_footer?.endRefreshing();
DispatchQueue.main.async {
self?.tableView.reloadData();
}
}
}
// MARK: UITableViewDelegate
func numberOfSections(in tableView: UITableView) -> Int {
return 1;
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataMArr.count;
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "LinkmanListCell", for: indexPath) as! LinkmanListCell;
if (dataMArr.count > indexPath.row) {
cell.cellModel = dataMArr[indexPath.row];
} else {
cell.cellModel = nil;
}
return cell;
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath) as? LinkmanListCell;
let model = cell?.cellModel;
//let details = LinkmanDetailsViewController(nibName: "LinkmanDetailsViewController", bundle: nil);
let details = LinkmanDetailsViewController();
details.listModel = model;
details.jumpClick = { (mark) -> () in
if (mark == 1) {
self.tableView.reloadData();
}
}
self.navigationController?.pushViewController(details, animated: true);
}
}
LinkmanDetailsViewController
import UIKit
typealias CompleteBlock = (_ mark:Int) -> ();
class LinkmanDetailsViewController: UIViewController {
@IBOutlet weak var nameText: UITextField!
@IBOutlet weak var phoneText: UITextField!
@IBOutlet weak var workText: UITextField!
var listModel: LinkmanModel?;
var jumpClick: CompleteBlock?;
override func viewDidLoad() {
super.viewDidLoad()
nameText?.text = listModel?.name;
phoneText?.text = listModel?.phone;
workText?.text = listModel?.work;
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true);
}
@IBAction func tapChangeAction(_ sender: Any) {
listModel?.name = nameText.text;
listModel?.phone = phoneText.text;
listModel?.work = workText.text;
jumpClick!(1);
navigationController?.popViewController(animated: true);
}
}
LinkmanListCell
import UIKit
class LinkmanListCell: UITableViewCell {
@IBOutlet weak var nameLab: UILabel!
@IBOutlet weak var phoneLab: UILabel!
@IBOutlet weak var workLab: UILabel!
var cellModel: LinkmanModel? {
didSet {
nameLab.text = cellModel?.name;
phoneLab.text = cellModel?.phone;
workLab.text = cellModel?.work;
}
}
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
LinkmanModel
import UIKit
class LinkmanModel: NSObject {
var name: String?;
var phone: String?;
var work: String?;
}