UITableView使用

1.新建RootViewController类

[objc] view plaincopy

  1. //
  2. //  RootViewController.swift
  3. //  UITableViewDemo
  4. //
  5. //  Created by 赵超 on 14-6-21.
  6. //  Copyright (c) 2014年 赵超. All rights reserved.
  7. //
  8. import UIKit
  9. class RootViewController: UIViewController,UITableViewDelegate, UITableViewDataSource {
  10. var tableView : UITableView?
  11. var items = ["武汉","上海","北京","深圳","广州","重庆","香港","台海","天津"]
  12. var leftBtn:UIButton?
  13. var rightButtonItem:UIBarButtonItem?
  14. override func viewDidLoad() {
  15. super.viewDidLoad()
  16. initView()
  17. setupRightBarButtonItem()
  18. setupLeftBarButtonItem()
  19. self.leftBtn!.userInteractionEnabled = true
  20. // Do any additional setup after loading the view.
  21. }
  22. func initView(){
  23. // 初始化tableView的数据
  24. self.tableView=UITableView(frame:self.view.frame,style:UITableViewStyle.Plain)
  25. // 设置tableView的数据源
  26. self.tableView!.dataSource=self
  27. // 设置tableView的委托
  28. self.tableView!.delegate = self
  29. //
  30. self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
  31. self.view.addSubview(self.tableView!)
  32. }
  33. //加左边按钮
  34. func setupLeftBarButtonItem()
  35. {
  36. self.leftBtn = UIButton.buttonWithType(UIButtonType.Custom) as? UIButton
  37. self.leftBtn!.frame = CGRectMake(0,0,50,40)
  38. self.leftBtn?.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)
  39. self.leftBtn?.setTitle("Edit", forState: UIControlState.Normal)
  40. self.leftBtn!.tag = 100
  41. self.leftBtn!.userInteractionEnabled = false
  42. self.leftBtn?.addTarget(self, action: "leftBarButtonItemClicked", forControlEvents: UIControlEvents.TouchUpInside)
  43. var barButtonItem = UIBarButtonItem(customView: self.leftBtn)
  44. self.navigationItem!.leftBarButtonItem = barButtonItem
  45. }
  46. //左边按钮事件
  47. func leftBarButtonItemClicked()
  48. {
  49. println("leftBarButton")
  50. if (self.leftBtn!.tag == 100)
  51. {
  52. self.tableView?.setEditing(true, animated: true)
  53. self.leftBtn!.tag = 200
  54. self.leftBtn?.setTitle("Done", forState: UIControlState.Normal)
  55. //将增加按钮设置不能用
  56. self.rightButtonItem!.enabled=false
  57. }
  58. else
  59. {
  60. //恢复增加按钮
  61. self.rightButtonItem!.enabled=true
  62. self.tableView?.setEditing(false, animated: true)
  63. self.leftBtn!.tag = 100
  64. self.leftBtn?.setTitle("Edit", forState: UIControlState.Normal)
  65. }
  66. }
  67. //加右边按钮
  68. func setupRightBarButtonItem()
  69. {
  70. self.rightButtonItem = UIBarButtonItem(title: "Add", style: UIBarButtonItemStyle.Plain, target: self,action: "rightBarButtonItemClicked")
  71. self.navigationItem!.rightBarButtonItem = self.rightButtonItem
  72. }
  73. //增加事件
  74. func rightBarButtonItemClicked()
  75. {
  76. var row = self.items.count
  77. var indexPath = NSIndexPath(forRow:row,inSection:0)
  78. self.items.append("杭州")
  79. self.tableView?.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Left)
  80. }
  81. override func didReceiveMemoryWarning() {
  82. super.didReceiveMemoryWarning()
  83. // Dispose of any resources that can be recreated.
  84. }
  85. //总行数
  86. func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int{
  87. return self.items.count
  88. }
  89. //加载数据
  90. func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!{
  91. let cell = tableView .dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
  92. var row=indexPath.row as Int
  93. cell.textLabel.text=self.items[row]
  94. cell.imageView.image = UIImage(named:"green.png")
  95. return cell;
  96. }
  97. //删除一行
  98. func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!){
  99. var index=indexPath.row as Int
  100. self.items.removeAtIndex(index)
  101. self.tableView?.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top)
  102. NSLog("删除\(indexPath.row)")
  103. }
  104. //选择一行
  105. func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!){
  106. let alert = UIAlertView()
  107. alert.title = "提示"
  108. alert.message = "你选择的是\(self.items[indexPath.row])"
  109. alert.addButtonWithTitle("Ok")
  110. alert.show()
  111. }
  112. }

2.APPDelegate.swift调用

[objc] view plaincopy

  1. //
  2. //  AppDelegate.swift
  3. //  UITableViewDemo
  4. //
  5. //  Created by 赵超 on 14-6-21.
  6. //  Copyright (c) 2014年 赵超. All rights reserved.
  7. //
  8. import UIKit
  9. @UIApplicationMain
  10. class AppDelegate: UIResponder, UIApplicationDelegate {
  11. var window: UIWindow?
  12. func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
  13. self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
  14. // Override point for customization after application launch.
  15. var rootView=RootViewController()
  16. var nav=UINavigationController(rootViewController:rootView)
  17. self.window!.rootViewController = nav;
  18. self.window!.backgroundColor = UIColor.whiteColor()
  19. self.window!.makeKeyAndVisible()
  20. return true
  21. }
  22. func applicationWillResignActive(application: UIApplication) {
  23. // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
  24. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
  25. }
  26. func applicationDidEnterBackground(application: UIApplication) {
  27. // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
  28. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
  29. }
  30. func applicationWillEnterForeground(application: UIApplication) {
  31. // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
  32. }
  33. func applicationDidBecomeActive(application: UIApplication) {
  34. // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
  35. }
  36. func applicationWillTerminate(application: UIApplication) {
  37. // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
  38. }
  39. }

3.效果

多谢分享

时间: 2024-11-13 08:11:13

UITableView使用的相关文章

iOS开发——项目实战总结&UITableView性能优化与卡顿问题

UITableView性能优化与卡顿问题 1.最常用的就是cell的重用, 注册重用标识符 如果不重用cell时,每当一个cell显示到屏幕上时,就会重新创建一个新的cell 如果有很多数据的时候,就会堆积很多cell.如果重用cell,为cell创建一个ID 每当需要显示cell 的时候,都会先去缓冲池中寻找可循环利用的cell,如果没有再重新创建cell 2.避免cell的重新布局 cell的布局填充等操作 比较耗时,一般创建时就布局好 如可以将cell单独放到一个自定义类,初始化时就布局好

iOS开发tips-神奇的UITableView

概述 UITableView是iOS开发中使用频率最高的UI控件,在前面的文章中对于UITableView的具体用法有详细的描述,今天主要看一些UITableView开发中的常见一些坑,这些坑或许不深,但是如果开发中注意不到的话往往比较浪费时间. 神奇的section header 事情的起因是一个网友说要实现一个类似下图界面,但是不管是设置sectionHeaderHeight还是代理方法中实现func tableView(_ tableView: UITableView, heightFor

ios UISearchDisplayController 实现 UITableView 搜索功能

UISearchDisplayController 是苹果专为 UITableView 搜索封装的一个类. 里面内置了一个 UITableView 用于显示搜索的结果.它可以和一个需要搜索功能的 controller 关联起来,其它的像原 TableView 和搜索结果 TableView 的切换, mask 的显示等等都 封装好了,使用起来非常非常的简单.特别是要实现全屏搜索时使用最多. 全屏搜索的意思是如果你用了  NavigationBar 当点击搜索框时 TableView 会自动弹上去

iOS开发——仿Clear纯手势操作的UITableView

前言 在Clear应用中,用户无需任何按钮,纯靠不同的手势就可以完成对ToDoItem的删除.完成.添加.移动.具体来说,功能上有左划删除,右划完成,点击编辑,下拉添加.捏合添加.长按移动.这里将这些功能实现并记录. 左划删除与右划完成 所谓的左右滑动,就是自定义一个cell然后在上面添加滑动手势.在处理方法中计算偏移量,如果滑动距离超过cell宽度一半,就删除它,或者是为文本添加删除线等来完成它:如果没有超过一半,那么就用动画把cell归位. 效果图如下: 关键代码如下: - (void)ha

iOS UITableView表视图(1)

//在.h文件中声明一下 //例如:@property(nonatomic,strong)UITableView *table; //创建一个UITableView self.table = [[UITableView alloc] initWithFrame:self.bounds style:(UITableViewStylePlain)]; //设置行的高度 self.table.rowHeight = 260.0; //设置分割线的颜色 self.table.separatorColor

UITableView

1.如何设置tableview  每行之间的分割线 self.table.separatorStyle=UITableViewCellSeparatorStyleSingleLine; 2.如何让cell 能够响应 select,但是选中后的颜色又不发生改变呢,那么就设置 法一:完全不变色 cell.selectionStyle  =  UITableViewCellSelectionStyleNone: 法二:变下色马上恢复 [tableView deselectRowAtIndexPath:

iOS开发UI篇—UITableview控件基本使用

一.一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) 1 #import <Foundation/Foundation.h> 2 3 @interface NJHero : NSObject 4 /** 5 * 头像 6 */ 7 @property (nonatomic, copy) NSString *icon; 8 /** 9 * 名称 10 */ 11 @property (nonatomic, copy) NSString *name; 12 /** 13 * 描述 1

iOS开发UI篇—UITableview控件简单介绍

一.基本介绍 在众多移动应?用中,能看到各式各样的表格数据 . 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UITableView继承自UIScrollView,因此支持垂直滚动,?且性能极佳 . UITableview有分组和不分组两种样式,可以在storyboard或者是用代码设置. 二.数据展示 UITableView需要?一个数据源(dataSource)来显示数据UITableView会向数据源查询一共有多少行数据以及每?行显示什么数据等 没有设置数据源

iOS 中UITableView的深理解

例如下图:首先分析一下需求:1.根据模型的不同状态显示不同高度的cell,和cell的UI界面. 2.点击cell的取消按钮时,对应的cell首先要把取消按钮隐藏掉,然后改变cell的高度. 根据需求先解决第一个需求,需要两步 当模型数据的属性的status [email protected]"2",不显示取消按钮:status = @"1",显示取消按钮. 1.需要注意的是cell的重用在这里面互有一些影响,所以在自定义cell的模型的setter方法中, 在ce

iOS开发UI篇—实现UItableview控件数据刷新

iOS开发UI篇—实现UItableview控件数据刷新 一.项目文件结构和plist文件 二.实现效果 1.说明:这是一个英雄展示界面,点击选中行,可以修改改行英雄的名称(完成数据刷新的操作). 运行界面: 点击选中行: 修改数据后自动刷新: 三.代码示例 数据模型部分: YYheros.h文件 // // YYheros.h // 10-英雄展示(数据刷新) // // Created by apple on 14-5-29. // Copyright (c) 2014年 itcase. A