Overview:
UITableView 一直都是初学者入门iOS的一个很好的切入点,网上已经有很多非常优秀详细的教程了,在这里我将为各位初学者提供一个UITableView的简单模板,涵盖的都是很初级的内容,希望可以为大家入门Swift出一份绵薄之力。
Example:
class TodoViewController:UITableViewController{
override func viewDidLoad() {
self.tableView.delegate = self
self.tableView.dataSource = self
//UITableView 所关联的数据模型
var todos: [TodoModel] = []
navigationItem.leftBarButtonItem = editButtonItem()
NSNotificationCenter.defaultCenter().addObserver(self,selector: #selector(reloadData), name: "reload", object: nil)
}
// 表示一个UItableView section 里显示几行TableView Cell
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return todos.count
}
// 绘制 TableView Cell 功能的最主要的一个方法,在这里将你自定义的Cell(如果有)与你所想显示的数据进行连接。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath:NSIndexPath) ->UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("todoCell") as! TodoCell
cell.despTxt.text = todos[indexPath.row].title
cell.todoImg.image = todos[indexPath.row].image
return cell
}
// 定义点击 TableView Cell 时的触发事件
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let item = todos[indexPath.row]
let detailVC = self.storyboard!.instantiateViewControllerWithIdentifier("DetailViewController")
as! DetailViewController
detailVC.todoItem = (item,indexPath.row,true)
self.navigationController?.pushViewController(detailVC, animated: true)
}
// 定义默认使用的 UITableView 编辑模式
override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
return UITableViewCellEditingStyle.Delete
}
// 定义 UITableView 编辑模式被触发时的反应事件
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath){
if editingStyle == UITableViewCellEditingStyle.Delete {
todos.removeAtIndex(indexPath.row)
self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
// 激活 UITableView Cell 重新排序功能并定义被触发时的反应事件
override func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath) {
let todo = todos.removeAtIndex(sourceIndexPath.row)
todos.insert(todo, atIndex: destinationIndexPath.row)
}
// 定义某一个或某一些 UITableViewCell 是否能够被重新排序
override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
if indexPath.row == 1 {
return false
}
return true
}
// 在当前视图控制器由导航控制器控制且导航栏中包含[editButtonItem]时,若UIViewController的editing为NO,则显示为”Edit”,若editing为YES,则显示为”Done”。
// 可利用此按钮在设置UIViewController的editing状态时同时设置tableView的编辑状态。
override func setEditing(editing: Bool, animated: Bool) {
super.setEditing(editing,animated:animated)
self.tableView.setEditing(editing, animated: animated)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
</code></pre>
注:上述Sample Code只列出了UITableView最常见的几个功能,如果各位同学感兴趣,还请自行查阅相关资料进行学习。共勉~!
网友评论