美文网首页
swift中tableViewCell的操作

swift中tableViewCell的操作

作者: WXGD | 来源:发表于2016-08-16 15:48 被阅读232次

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

}

}

相关文章

网友评论

      本文标题:swift中tableViewCell的操作

      本文链接:https://www.haomeiwen.com/subject/ruppsttx.html