0 说明
在本文中,介绍了在xcode的使用tableview的自定义cell,里面还穿插了导航栏的使用,页面的跳转以及本地存储的实现
最后大家可以在下载demo
http://download.csdn.net/detail/wtt561111/9171107
1因为涉及到导航栏的使用,所以需要现在修改appDelegate文件。如图,添加下面的三行代码
2下面创建自己的cell,新建一个swift文件,命名为TableViewCell
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var table:UITableView!
var array = ["item1","item2","item3","item4","item5","item6","item7"]
override func viewDidLoad() {
super.viewDidLoad()
title = "FirstApp"
var view: UIView = UIView(frame: self.view.frame)
view.backgroundColor = UIColor.whiteColor()
self.view.addSubview(view)
var leftButton:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Edit, target: self, action:"leftCall:")
self.navigationItem.leftBarButtonItem = leftButton
var rightButton:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Add, target: self, action: "rightCall:")
self.navigationItem.rightBarButtonItem = rightButton
var rect = self.view.frame
rect.origin.y += 65
table = UITableView(frame: rect)
table.registerClass(TableViewCell.self, forCellReuseIdentifier: "cell")
self.view.addSubview(table)
table.delegate = self
table.dataSource = self
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 60
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return array.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var str:String = "cell"
var cell:TableViewCell = tableView.dequeueReusableCellWithIdentifier(str, forIndexPath: indexPath) as! TableViewCell
if cell.isEqual(nil) {
cell = TableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: str)
}
cell.title.text = array[indexPath.row]
cell.clickBtn.tag = indexPath.row
cell.clickBtn.removeTarget(self, action: "tableViewCellClicked:", forControlEvents: UIControlEvents.TouchUpInside)
cell.clickBtn.addTarget(self, action: "tableViewCellClicked:", forControlEvents: UIControlEvents.TouchUpInside)
return cell
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == UITableViewCellEditingStyle.Delete {
array.removeAtIndex(indexPath.row)
table.reloadData()
}
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
println("clicked at \(indexPath.row)")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func leftCall(sender:AnyObject) {
table.setEditing(!table.editing, animated: true)
var btn:UIBarButtonItem = sender as! UIBarButtonItem
btn.title = "Done"
println("leftButton pressed")
}
func rightCall(sender:AnyObject) {
array.append("新建cell")
table.reloadData()
println("rightButton pressed")
var myPara1="this is my para1";
NSUserDefaults.standardUserDefaults().setValue(myPara1, forKey: "para1");
var myPara2="this is my para2";
NSUserDefaults.standardUserDefaults().setValue(myPara2, forKey: "para2");
NSUserDefaults.standardUserDefaults().synchronize();
self.navigationController?.pushViewController(PushTest(), animated: true)
}
func tableViewCellClicked(sender:AnyObject) {
println("tableViewCell appButton at \((sender as! UIButton).tag) clicked")
}
}
3因为还要考虑到界面的跳转,需要新建swift文件 PushTest
//
// PushTest.swift
// TableViewWithMyselfCell
//
// Created by wangtuntun on 15/10/10.
// Copyright (c) 2015年 wangtuntun. All rights reserved.
//
import Foundation
import UIKit
class PushTest:UIViewController{
override func viewDidLoad() {
println("this is push test");
var para1Get:String = NSUserDefaults.standardUserDefaults().valueForKey("para1") as! String;
var para2Get:String = NSUserDefaults.standardUserDefaults().valueForKey("para2") as! String;
println(para1Get);
println(para2Get);
}
override func didReceiveMemoryWarning() {
}
}