在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)
}
}