Demo:链接: http://download.csdn.net/download/riven_wn/9401961
AppDelegate
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
{
var VC = ViewController()
var nav = UINavigationController(rootViewController: VC)
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window!.rootViewController = nav
self.window?.backgroundColor = UIColor.whiteColor()
self.window?.makeKeyAndVisible()
return true
}
ViewController
引入代理,注意这里在完成dataSource的几个方法之前,UITableViewDataSource会报错,完成之后就好了
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource
定义tableView 和 数据源
var _tableView:UITableView?
var _dataSource = ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]
override func viewDidLoad()
{
super.viewDidLoad()
//配置导航栏
self.navigationItem.title = "单元格滑动可删除"
var leftBtn = UIBarButtonItem(title: "Add", style: UIBarButtonItemStyle.Plain, target: self, action:"add")
var rightBtn = UIBarButtonItem(title: "Move", style: UIBarButtonItemStyle.Plain, target: self, action: "edit:")
rightBtn.tag = 100
self.navigationItem.leftBarButtonItem = leftBtn
self.navigationItem.rightBarButtonItem = rightBtn
//配置表
_tableView = UITableView(frame: self.view!.bounds)
_tableView?.delegate = self
_tableView?.dataSource = self
self.view .addSubview(_tableView!)
}
导航按钮点击事件
//导航按钮点击事件
func add()
{
println("add sth")
_dataSource .append("一周就七天")
_tableView?.reloadData()
}
func edit(rightBtn:UIBarButtonItem)
{
println("edit tableView")
if(rightBtn.tag == 100)
{
_tableView?.setEditing(true, animated: true)
rightBtn.tag = 200
rightBtn.title = "done"
}
else
{
_tableView?.setEditing(false, animated: true)
rightBtn.tag = 100
rightBtn.title = "edit"
}
}
UITableViewDataSource UITableViewDelegate
//UITableViewDataSource UITableViewDelegate
//行数
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return _dataSource.count
}
//单元格内容
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let identifier = "Cell"
var cell = tableView.dequeueReusableCellWithIdentifier(identifier)as? UITableViewCell;
if(cell == nil)
{
cell = UITableViewCell(style:UITableViewCellStyle.Default, reuseIdentifier: identifier)
}
cell?.textLabel?.text = _dataSource[indexPath.row]
return cell!
}
//是否允许打开编辑状态 默认是 可以不写
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool
{
return true
}
func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle
{
//允许滑动删除
if(_tableView?.editing == false)
{
return UITableViewCellEditingStyle.Delete
}
//移动单元格
else
{
return UITableViewCellEditingStyle.None
}
}
//删除某行
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
{
_dataSource.removeAtIndex(indexPath.row)
_tableView?.reloadData()
}
//允许移动某行
func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool
{
return true
}
//移动
func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath)
{
_tableView?.moveRowAtIndexPath(sourceIndexPath, toIndexPath: destinationIndexPath)
var itemToMove = _dataSource[sourceIndexPath.row]
//在这里找不到数组exchange的方法, 所以采用先移除后添加来实现交换位置
_dataSource.removeAtIndex(sourceIndexPath.row)
_dataSource.insert(itemToMove, atIndex: destinationIndexPath.row)
}
//cell点击事件
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
switch indexPath.row
{
case 0:
self.navigationController?.pushViewController(FirstViewController(), animated: true)
case 1:
self .presentViewController(SecondViewController(), animated: true, completion: nil)
case 2:
self.navigationController?.pushViewController(ThirdViewController(), animated: true)
default:
var alert = UIAlertView(title: "提示", message: "不是前三", delegate: nil, cancelButtonTitle: "cancel")
alert.show()
}
}
SecondViewController
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "Second"
self.view.backgroundColor = UIColor.redColor()
var button = UIButton(frame: self.view.bounds)
button.addTarget(self, action: "buttonClick", forControlEvents: UIControlEvents.TouchUpInside)
button.setTitle("点击屏幕返回", forState: UIControlState.Normal)
self.view.addSubview(button)
}
func buttonClick()
{
print("buttonClick")
self .dismissViewControllerAnimated(true, completion: nil)
}
ThirdViewController
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "Third"
self.view.backgroundColor = UIColor.greenColor()
var button = UIButton(frame: self.view.bounds)
button.addTarget(self, action: "buttonClick", forControlEvents: UIControlEvents.TouchUpInside)
button.setTitle("点击屏幕去根视图", forState: UIControlState.Normal)
self.view.addSubview(button)
}
func buttonClick()
{
print("buttonClick")
self.navigationController?.popToRootViewControllerAnimated(true)
}