您的位置:首页 > 移动开发 > Swift

iOS- Swift实现UITableView的常见操

2016-01-13 16:17 393 查看


1.前言

Swift在这就不多介绍了,想必大家都已皆知。

离Swift面世也过了有一个多月的时间。

在闲暇时间我用Swift实现了UITableView的一些常见操作。

基本都是可以用上的,今天在自己的博客里分享给大家。


2.初始化程序入口

初始化程序入口,先给我们的ViewController封装一个导航控制器

!代表不为nil,?表示可nil (!与?编译器会根据不同的标识来检测 )


1.新建RootViewController类

[objc] view plaincopy




//

// RootViewController.swift

// UITableViewDemo

//

// Created by 赵超 on 14-6-21.

// Copyright (c) 2014年 赵超. All rights reserved.

//

import UIKit

class RootViewController: UIViewController,UITableViewDelegate, UITableViewDataSource {

var tableView : UITableView?

var items = ["武汉","上海","北京","深圳","广州","重庆","香港","台海","天津"]

var leftBtn:UIButton?

var rightButtonItem:UIBarButtonItem?

override func viewDidLoad() {

super.viewDidLoad()

initView()

setupRightBarButtonItem()

setupLeftBarButtonItem()

self.leftBtn!.userInteractionEnabled = true

// Do any additional setup after loading the view.

}

func initView(){

// 初始化tableView的数据

self.tableView=UITableView(frame:self.view.frame,style:UITableViewStyle.Plain)

// 设置tableView的数据源

self.tableView!.dataSource=self

// 设置tableView的委托

self.tableView!.delegate = self

//

self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")

self.view.addSubview(self.tableView!)

}

//加左边按钮

func setupLeftBarButtonItem()

{

self.leftBtn = UIButton.buttonWithType(UIButtonType.Custom) as? UIButton

self.leftBtn!.frame = CGRectMake(0,0,50,40)

self.leftBtn?.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)

self.leftBtn?.setTitle("Edit", forState: UIControlState.Normal)

self.leftBtn!.tag = 100

self.leftBtn!.userInteractionEnabled = false

self.leftBtn?.addTarget(self, action: "leftBarButtonItemClicked", forControlEvents: UIControlEvents.TouchUpInside)

var barButtonItem = UIBarButtonItem(customView: self.leftBtn)

self.navigationItem!.leftBarButtonItem = barButtonItem

}

//左边按钮事件

func leftBarButtonItemClicked()

{

println("leftBarButton")

if (self.leftBtn!.tag == 100)

{

self.tableView?.setEditing(true, animated: true)

self.leftBtn!.tag = 200

self.leftBtn?.setTitle("Done", forState: UIControlState.Normal)

//将增加按钮设置不能用

self.rightButtonItem!.enabled=false

}

else

{

//恢复增加按钮

self.rightButtonItem!.enabled=true

self.tableView?.setEditing(false, animated: true)

self.leftBtn!.tag = 100

self.leftBtn?.setTitle("Edit", forState: UIControlState.Normal)

}

}

//加右边按钮

func setupRightBarButtonItem()

{

self.rightButtonItem = UIBarButtonItem(title: "Add", style: UIBarButtonItemStyle.Plain, target: self,action: "rightBarButtonItemClicked")

self.navigationItem!.rightBarButtonItem = self.rightButtonItem

}

//增加事件

func rightBarButtonItemClicked()

{

var row = self.items.count

var indexPath = NSIndexPath(forRow:row,inSection:0)

self.items.append("杭州")

self.tableView?.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Left)

}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.

}

//总行数

func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int{

return self.items.count

}

//加载数据

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!{

let cell = tableView .dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell

var row=indexPath.row as Int

cell.textLabel.text=self.items[row]

cell.imageView.image = UIImage(named:"green.png")

return cell;

}

//删除一行

func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!){

var index=indexPath.row as Int

self.items.removeAtIndex(index)

self.tableView?.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top)

NSLog("删除\(indexPath.row)")

}

//选择一行

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!){

let alert = UIAlertView()

alert.title = "提示"

alert.message = "你选择的是\(self.items[indexPath.row])"

alert.addButtonWithTitle("Ok")

alert.show()

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: