iOS开发——UI篇Swift篇&玩转UItableView(二)高级功能
UItableView高级功能
class UITableViewControllerAF: UIViewController, UITableViewDataSource, UITableViewDelegate {
var titleString:String!
@IBOutlet var titleLabel:UILabel!
@IBOutlet var listTableView : UITableView!
@IBOutlet var editDoneButton : UIButton!
//定义数组
var items:[String] = ["北京",
"上海",
"天津",
"山东",
"河北",
"湖北"]
//返回按钮事件
@IBAction func backButtonClick()
{
self.navigationController?.popViewControllerAnimated(true)
}
//编辑按钮事件
@IBAction func editButtonClick()
{
if editDoneButton.titleForState(UIControlState.Normal) == "编辑"
{
//如果按钮标题是编辑,则将表视图设置成可编辑状态,并修改button标题为“完成”
listTableView.setEditing(true, animated: true)
editDoneButton.setTitle("完成", forState: UIControlState.Normal)
}else
{
//如果按钮标题是完成,则设置成不可编辑,并修改button标题为“编辑”
listTableView.setEditing(false, animated: true)
editDoneButton.setTitle("编辑", forState: UIControlState.Normal)
}
}
//自定义添加按钮事件
@IBAction func addButtonClick()
{
//数组添加新数据
items.insert()
//初始化一个NSIndexPath对象,指定要添加的单元格位置
let indexPath = NSIndexPath(forRow: , inSection: )
//在指定位置上添加一个新的单元格
self.listTableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
}
override func viewDidLoad() {
super.viewDidLoad()
titleLabel.text = titleString
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
//MARK: - UITableViewDelegate
//tableView数据源:返回几节(组)
func numberOfSectionsInTableView(tableView: UITableView) -> Int
{
}
//tableView数据源:返回每一节行数
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return items.count //返回数组数量
}
//行缩进
func tableView(tableView: UITableView, indentationLevelForRowAtIndexPath indexPath: NSIndexPath) -> Int
{
return indexPath.row
}
//tableView 数据源:每一行高度
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
}
//tableView数据源:每一行内容
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
//Cell标示符,代表一系列
// OC:使用static, swift:使用let
let cellIdentifier: String = "cellIdentifier"
//通过cellIdentifier标示符取没有使用的Cell
//有可能不存在,所以使用:optional
var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? UITableViewCell
//如果cell取到是空
if cell == nil { // no value
//创建新的cell
//cell样式:UITableViewCellStyle.Default
//cell标示符:cellIdentifier
cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: cellIdentifier)
//设置字体
// cell!.textLabel.font = UIFont.systemFontOfSize(14)
//2015年4月10号修改
cell!.textLabel?.font = UIFont.systemFontOfSize()
//设置选中cell样式
cell!.selectionStyle = .Gray;
//设置cell后面箭头样式
cell!.accessoryType = .DisclosureIndicator;
}
//去当前行
var row=indexPath.row as Int
//从数组取对应值给cell赋值
// cell!.textLabel.text = self.items[row]
//2015年4月10号修改
cell!.textLabel?.text = self.items[row]
//设置cell图片
// cell!.imageView.image = UIImage(named:"cellImage.png")
//2015年4月10号修改
cell!.imageView?.image = UIImage(named:"cellImage.png")
return cell!;
}
//确定每一行 是否可以编辑
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool
{
return true
}
//返回每一行 操作类型
func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle
{
//最后一行允许插入
{
return .Insert
}
return .Delete //允许删除操作
}
//在编辑状态,可以拖动设置cell位置
func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool
{
return true
}
//编辑cell事件
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
{
//如果是删除操作
if editingStyle == UITableViewCellEditingStyle.Delete
{
items.removeAtIndex(indexPath.row)//将数据源数组删除对应行数数据
//table表删除该行
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Left)
}
//如果是插入一行操作
else if editingStyle == UITableViewCellEditingStyle.Insert
{
//数组添加一条新数据
items.append("新城市 \(items.count)")
//表视图插入一条单元格
tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Middle)
}
}
//移动cell事件
func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) {
if fromIndexPath != toIndexPath{
//获取移动行对应的值
var itemValue:String = items[fromIndexPath.row]
//删除移动的行的值
items.removeAtIndex(fromIndexPath.row)
//如果移动区域大于现有行数,直接在最后添加移动的值
if toIndexPath.row > items.count{
items.append(itemValue)
}else{ //没有超出最大行数,则在目标位置添加刚才删除的值
items.insert(itemValue, atIndex: toIndexPath.row)
}
}
}
//tableView代理:点击一行
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
//释放选中效果
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
}
iOS开发——UI篇Swift篇&玩转UItableView(二)高级功能的更多相关文章
- iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用
swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...
- iOS开发——新特性Swift篇&Swift 2.0 异常处理
Swift 2.0 异常处理 WWDC 2015 宣布了新的 Swift 2.0. 这次重大更新给 Swift 提供了新的异常处理方法.这篇文章会主要围绕这个方面进行讨论. 如何建造异常类型? 在 i ...
- iOS开发——UI精选OC篇&UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍
UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道 ...
- iOS开发——网络编程Swift篇&Alamofire详解
Alamofire详解 预览图 Swift Alamofire 简介 Alamofire是 Swift 语言的 HTTP 网络开发工具包,相当于Swift实现AFNetworking版本. 当然,AF ...
- ios开发——实用技术总结Swift篇&swift常用开发技术总结
swift常用开发技术总结 懒加载:属性,数组(字典),控件... 数组(懒加载): lazy var shops:Array<Dictionary<String, String>& ...
- iOS开发——网络编程Swift篇&(八)SwiftyJSON详解
SwiftyJSON详解 最近看了一些网络请求的例子,发现Swift在解析JSON数据时特别别扭,总是要写一大堆的downcast(as?)和可选(Optional),看?号都看花了.随后发现了这个库 ...
- ios开发——实用技术篇Swift篇&地址薄、短信、邮件
//返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnimated(tru ...
- iOS开发——图形编程Swift篇&CAShapeLayer实现圆形图片加载动画
CAShapeLayer实现圆形图片加载动画 几个星期之前,Michael Villar在Motion试验中创建一个非常有趣的加载动画. 下面的GIF图片展示这个加载动画,它将一个圆形进度指示器和圆形 ...
- iOS开发零基础--Swift篇 元组
元组的介绍 元组是Swift中特有的,OC中并没有相关类型 它是什么呢? 它是一种数据结构,在数学中应用广泛 类似于数组或者字典 可以用于定义一组数据 组成元组类型的数据可以称为“元素” 元组的定义 ...
- iOS开发零基础--Swift篇 循环
循环的介绍 在开发中经常会需要循环 常见的循环有:for/while/do while. 这里我们只介绍for/while,因为for/while最常见 for循环的写法 最常规写法 // 传统写法 ...
随机推荐
- 【LeetCode】14 - Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings. Solution: cla ...
- layout相关
大致看了看布局大致有5种(approximately) 1. LinearLayout 2. RelativeLayout 3. FrameLayout 4. TableLayout 5. GridL ...
- 用js完成blog项目
//前台调用 var $ = function (args) { return new Base(args); } //基础库 function Base(args) { //创建一个数组,来保存获取 ...
- windows平台下,快速删除所有.svn文件夹
新建一个注册表文件名为:DELSVN.reg编辑其内容如下: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Cla ...
- 在VS2013中使用水晶报表
又遇到了在B/S系统中打印,打印格式要求比较高,打印出的效果要求高大上.用VS2013中微软自带的报表,实在难以实现应用的效果,主要问题表现在: 1.不能插入用Word做好的打印模板,自己按照模板来做 ...
- Android SDK Manager更新不了的解决办法
android SDK Manager更新不了,出现错误提示:"Failed to fetch URL..."! 可以用以下办法解决: 使用SDK Manager更新时出现问题 F ...
- VISIO 2007 修改形状默认字体 自定义模具
visio 2007的形状的默认字体为8号,比较小,怎样改成默认10号? 首先将一个流程图中所要用的形状都拖到绘图区,然后全选,设置字体为10号,全选,再拖动到形状区,如下图: 点击‘是’,确认修改模 ...
- dbcp 是什么
Many Apache projects support interaction with a relational database. Creating a new connection for e ...
- jQuery在updatepanel中使用造成内存泄露
wijmo用户反馈了一个RadialGauge控件内存泄露的bug,采用chrome监控内存使用情况,发现明显的内存泄露,在前面的文章中我就发现了jQuery内存泄露的问题,这次再次发现此问题,自然就 ...
- 监听UITextFiled输入文字长度的变化
需求:如果UITextFiled文字的长度大于零,改变一个按钮的颜色 1.一开始想到的当然是UITextFiled的代理方法,但是在UITextFiled的代理方法中并没有监听这个的这一选项!!! 2 ...