swift中tableViewCell的操作

在iOS的开发过程中,tableView的使用永远都是最常用的控件。今天学习了一下tableViewCell的操作。代码并不是很复杂,如果有OC开发经验的人,应该很容易看懂的。


classViewController:UIViewController,UITableViewDelegate,UITableViewDataSource

{

//    因为Swift中要求变量或常量在声明时就要初始化其值,所以我们在实际开发中,声明变量或常量时使用可选类型。后面代码中使用到以上变量时需要加 ! 对其解包。

vartableView:UITableView?

//    var items :NSMutableArray?

// 例如可以不用可选,

varitems:NSMutableArray= []

varleftBtn:UIButton?

overridefuncviewDidLoad() {

super.viewDidLoad()

self.items=NSMutableArray()

// 初始化tableView

setupViews()

// 右边添加按钮

setupRightBarButtonItem()

// 左边删除按钮

setupLeftBarButtonItem();

}

funcsetupViews()

{

self.tableView=UITableView(frame:self.view!.frame)

self.tableView!.delegate=self

self.tableView!.dataSource=self

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

self.view.addSubview(self.tableView!)

}

funcsetupLeftBarButtonItem()

{

self.leftBtn=UIButton(type:UIButtonType.Custom)

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)

letbarButtonItem=UIBarButtonItem(customView:self.leftBtn!)

self.navigationItem.leftBarButtonItem=barButtonItem

}

funcsetupRightBarButtonItem()

{

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

self.navigationItem.rightBarButtonItem=barButtonItem

}

funcrightBarButtonItemClicked()

{

letrow=self.items.count

letindexPath=NSIndexPath(forRow:row,inSection:0)

self.items.addObject("1")

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

self.leftBtn!.userInteractionEnabled=true

}

funcleftBarButtonItemClicked()

{

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

{

// 设置当前tableView可编辑

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

self.leftBtn!.tag=200

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

}

else

{

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

self.leftBtn!.tag=100

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

}

}

overridefuncdidReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.

}

functableView(tableView:UITableView,numberOfRowsInSectionsection:Int) ->Int

{

returnself.items.count

}

functableView(tableView:UITableView,cellForRowAtIndexPathindexPath:NSIndexPath) ->UITableViewCell

{

letcell=tableView.dequeueReusableCellWithIdentifier("cell",forIndexPath:indexPath)asUITableViewCell

cell.textLabel!.text=String(format:"%i",indexPath.row+1)

returncell

}

// 指定可编辑的行

functableView(tableView:UITableView,setEditingindexPath:NSIndexPath) ->Bool

{

returntrue

}

// 编辑完成

functableView(tableView:UITableView,commitEditingStyleeditingStyle:UITableViewCellEditingStyle,forRowAtIndexPathindexPath:NSIndexPath)

{

self.items.removeObjectAtIndex(indexPath.row)

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

if(self.items.count==0)

{

self.leftBtn!.userInteractionEnabled=false

}

}

// 编辑样式

functableView(tableView:UITableView,editingStyleForRowAtIndexPathindexPath:NSIndexPath) ->UITableViewCellEditingStyle

{

return(UITableViewCellEditingStyle.Delete)

}

// 指定哪些行可以移动

functableView(tableView:UITableView,canMoveRowAtIndexPathindexPath:NSIndexPath) ->Bool

{

returntrue

}

// 移动完成

functableView(tableView:UITableView,moveRowAtIndexPathsourceIndexPath:NSIndexPath,toIndexPathdestinationIndexPath:NSIndexPath)

{

self.tableView?.moveRowAtIndexPath(sourceIndexPath,toIndexPath:destinationIndexPath)

self.items.exchangeObjectAtIndex(sourceIndexPath.row,withObjectAtIndex:destinationIndexPath.row)

}

// 限制在同一分区移动

functableView(tableView:UITableView,targetIndexPathForMoveFromRowAtIndexPathsourceIndexPath:NSIndexPath,toProposedIndexPathproposedDestinationIndexPath:NSIndexPath) ->NSIndexPath{

ifsourceIndexPath.section==proposedDestinationIndexPath.section{

returnproposedDestinationIndexPath

}

returnsourceIndexPath

}

// 点击cell

functableView(tableView:UITableView,didSelectRowAtIndexPathindexPath:NSIndexPath)

{

print("row = %d",indexPath.row)

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,198评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,016评论 25 708
  • 准备工作 “工欲善其事必先利其器。” 1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好。...
    雾月之梦阅读 439评论 0 0
  • 序言 第一部分恋爱与自信的“道” 第一章、核心自信 第1节—自信的根源 第2节—自信与状态 第3节—如何提升核心自...
    迎刃阅读 5,731评论 1 8
  • 微信的朋友圈之所以火起来,关键能让远在天边近在眼前的朋友聚集在一个圈子里自由发表言论,晒各种幸福。这个圈子那个圈子...
    114号别墅阅读 686评论 0 0