- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
注:本小结总结UITableview的一些基本用法
UITbleView继承自UIScrollView,只能用来显示一列数据(目前就只认识到这里),纵向滑动。
一般有两种方式来实现,直接用UITableViewController , 占满整个屏幕 。不用手动实现UITableViewDataSource
和UITableViewDelegate
。另一种方式在UIViewController 中。我们看看这种方式
let table = UITableView()
table.frame = self.view.frame
self.view = table
table.delegate = self
table.dataSource = self
这里新建了一个UITableView
,并且将其frame设置成当前view的frame大小 。也就是占满屏幕 。当然这里 你也可以设置你需要的大小, 下面的两句就是将它的代理和数据源的协议 设置成当前对象 当然我们的viewcontroller是实现了这两个协议的。class ViewController: UIViewController , UITableViewDataSource , UITableViewDelegate
然后,把这个tableview添加到当前view上 或者直接把当前view赋值成它。
下面看几个主要的代理方法
//返回多少个section
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 3
}
返回section数, section相当于分组 ,也就是这里table分成几组 。我们这里分三组演示。
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section {
case 0 :
return arr.count
case 1:
return arr1.count
case 2:
return arr2.count
default:
return 0
}
}
然后这个方法就是每组的元素个数 。这里我们用了三个数组
func initData(){
arr.addObject("ssssddd")
arr.addObject("唱什么")
arr.addObject("what ")
arr.addObject("ssshenme dd")
arr1.addObject("我是二部的")
arr2.addObject("我是第三个部门的")
arr2.addObject("我是第三个部门的1")
}
我们在这里初始化了这三个数组 。在viewDidLoad
下调用。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let strCell = "cell"
var cell = tableView.dequeueReusableCellWithIdentifier(strCell)
if cell == nil{
cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: strCell)
}
switch indexPath.section{
case 0 :
cell!.textLabel?.text = arr[indexPath.row] as? String
case 1:
cell!.textLabel?.text = arr1[indexPath.row] as? String
case 2:
cell!.textLabel?.text = arr2[indexPath.row] as? String
default:
cell!.textLabel?.text = ""
}
//cell!.textLabel?.text = arr[indexPath.row] as? String
cell!.backgroundColor=UIColor.purpleColor()
cell?.contentView.backgroundColor = UIColor.grayColor()
return cell!
}
这个也是最主要的方法 ,给cell赋值 。这里先从tableView.dequeueReusableCellWithIdentifier
这个里面去取 , 没有的时候 才会去新建 ,因为下载过的数据是回缓存起来的。我们需要先从缓存池里面找。找不到采取新建,这样会比较流畅。
var refreshControl:UIRefreshControl?
这里我们声明一个刷新控件
self.refreshControl = UIRefreshControl()
self.refreshControl?.addTarget(self, action: "onPullToFresh", forControlEvents: UIControlEvents.ValueChanged)
self.refreshControl?.attributedTitle=NSAttributedString(string: "松手就可以刷新啦")
self.table.addSubview(refreshControl!)
这里设置下舒心控件的属性和给它注册方法onPullToFresh
func onPullToFresh(){
//下拉刷新
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
self.arr.addObject("ssssddd")
self.arr1.addObject("唱什么")
self.arr2.addObject("what ")
self.arr1.addObject("ssshenme dd")
dispatch_async(dispatch_get_main_queue(), {
self.table.reloadData()
self.refreshControl?.endRefreshing()
})
}
}
这个下拉刷新,先去异步添加数据 ,我们这里是手动添加进去的,但是实际应用中往往需要从网络去下载数据,所以比较慢,用异步会比较合适。下载完成后,回到主线程去重新加载数据 , 最后停止下拉刷新控件 。
table.editing = true
这里我们设置这个属性后, tableview可以编辑 , 新增删除等 。(不加这个属性只能左划删除 )
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if(editingStyle == UITableViewCellEditingStyle.Delete){ //delete
switch indexPath.section {
case 0 :
arr.removeObjectAtIndex(indexPath.row)
case 1:
arr1.removeObjectAtIndex(indexPath.row)
case 2:
arr2.removeObjectAtIndex(indexPath.row)
default:
print("no")
}
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade)
}else if(editingStyle == UITableViewCellEditingStyle.Insert){
switch indexPath.section {
case 0 :
arr.insertObject("新增的❤️", atIndex: indexPath.row+1)
case 1:
arr1.insertObject("新增的❤️", atIndex: indexPath.row+1)
case 2:
arr2.insertObject("新增的❤️", atIndex: indexPath.row+1)
default:
print("no")
}
let zyIndexPath = NSIndexPath (forRow: indexPath.row+1, inSection: indexPath.section)
tableView.insertRowsAtIndexPaths([zyIndexPath], withRowAnimation: UITableViewRowAnimation.Middle)
}
}
func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
if(indexPath.row % 2 == 1){
return UITableViewCellEditingStyle.Insert
}
else{
return UITableViewCellEditingStyle.Delete
}
}
然后再实现这两个方法。看下效果 、
这里可以新增和删除 。
旁边的检索这个方法
func sectionIndexTitlesForTableView(tableView: UITableView) -> [String]? {
return ["第一组","第二组","第三组"]
}
点击可以用这个方法
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("我点击了第\(indexPath.section)部分,第\(indexPath.row)行")
}
当然还有很多方法。大家可以输入tableview 会提示很多,大家可以去试试。这里不再赘述。
还是放上源码 :UITableView基本用法大全
学习iOS,有他就够了,小码哥视频,传智、黑马、各种swift书籍
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
1. 新增用户 复制代码代码如下: mysql>insert into mysql.user(Host,User,Password) values(&quo
本文实例讲述了PHP操作redis实现的分页列表,新增,删除功能封装类与用法。分享给大家供大家参考,具体如下: <?php/* * redis 分页数据类库 */class redisP
在我的场景中,我必须使用类来添加 div ,这可以使用 onClick 函数轻松解决,但我需要它来完成我的任务,.click(function() 不适用于新元素,javascript/jquery
本文主要介绍了vue+elementui通用弹窗的实现(新增+编辑),分享给大家,具体如下: 组件模板 ?
例如: 修改(列名前 要有column关键字) ALTER TABLE [USER] ALTER column [
复制代码 代码如下: //连接localhost:27017 $conn = new Mongo(); //连接远程主机默认端口 $conn = new Mong
我正在关注这个guideline对于 Maven 插件,我添加了以下内容: org.apache.maven.plugins maven-release-plugin 2.5.3 ma
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
在新的 Lucene 4.4.0 版本中,近实时管理器 (org.apache.lucene.search.NRTManage) 已被 ControlledRealTimeReopenThread 取
抱歉,我现在正在编程中,但是我正在学习中,请帮助我。我被困在这个问题上。这是我的第一个应用程序,在likke帮助下需要完成所有工作。 我收到此错误:类型'_InternalLinkedHashMap'
从下图中我们可以看出,使用 XCode 11 构建的 iOS 13 的新呈现样式使导航栏的高度(56 高)与“全屏”呈现的导航栏(44 高)不同。 这里的问题是我的应用程序使用的是自定义的书面导航栏,
在 EGit 2.3 中,他们根据他们的发布文档添加了非快进 merge 功能 "Support git merge --no-ff as an EGit preference." http://wi
IntelliJ IDEA 2020.3.3的新错误修复程序已发布!您可以使用工具箱应用程序从IDE内部更新到新版本,也可以点击下方链接下载。 idea激活码 下载IntelliJ IDEA 2
据小米手环官微消息,小米手环 5 固件版本更新至 1.0.2.46 版本,另外小米运动 APP 也更新至了 4.8.0 版本。 此次更新使得小米手环 5 实现了 24 小时睡眠监测,对于上夜班
我在最新的 IntelliJ Idea 中得到以下提示: Not registered via @EnableConfigurationProperties or marked as Spring c
我有一个 UserModel,用于生产。我想添加一个 bool 属性(isRegistered)。对于已经在我的平台上的人们,我希望这个新属性是真实的。对于新用户,我希望它默认为 false。 如何将
CSS 1、CSS 2、CSS 2.1 和 CSS 3:每个版本的哪些 CSS 属性和选择器不同?我在谷歌上搜索了很多,但没有找到任何列表? 我需要每个版本所支持的属性和选择器的列表,但有差异。 最佳
为什么? Web 应用程序(.NET Framework)和核心 Web 应用程序(.NET Core)都面向 AnyCPU 平台。 这是一个错误还是这样做有什么值(value)? 我在 Window
我是一名优秀的程序员,十分优秀!