07-UIKit(tableview的编辑模式、accessoryView)
目录:
一、tableview的编辑模式-增删改查
[1-contact-edit]
增:
1对数据模型增加数据
self.contacts addObject:
2对tableview增加行
self.tableView insertRowsAtIndexPaths
删改查:
tableview进入编辑模式
1如何设置编辑模式UITableView.editing
2能干什么:添加、删除、移动
这些都是对cell进行的操作
3进入编辑模式的快捷方式是把viewDidLoad中的self.editButtonItem显示出来,一旦按了按钮,tableview就会进入编辑模式,默认情况下是删除模式
4如果需要达到删除的效果需要进行两问一响应,两个问题可以不回答,但必须有响应
两问:
1)第一问哪些行可以进行编辑,哪些不能
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
2)第二问哪些行可以进行删除,哪些行可以进行插入
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
3)一响应当用户选择了行进行删除或插入,如何处理
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
二、不使用继承创建tableview
[2-tableView]
并提供三问一响应的链接dataSource和delegate到要提供数据的viewcontroller,这个viewcontroller要遵守detaSource这个协议
- (void)viewDidLoad
{
[super viewDidLoad];
UITableView *tableView = [[UITableView alloc] init];
tableView.frame = CGRectMake(160, 42, 122, 322);
tableView.dataSource = self;
[self.view addSubview:tableView];
// Do any additional setup after loading the view, typically from a nib.
}
静态的tableview
分区和行数都是固定的,如果用代码实现都是直接写死的。
三、accessoryView辅助视图
是tableview中cell的子试图中的一个,
有哪些类型:iOS6之前有4种iOS7增加了一种,
干什么用呢?触发高级事件
//返回cell数据
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.textLabel.text = @"ddd";
//设置辅助视图 也就是cell右边的那个视图
if (indexPath.row == 0) {
//开关
cell.accessoryView = [[UISwitch alloc] init];
}else{
cell.accessoryType = UITableViewCellAccessoryDetailButton;
}
return cell;
}
//点击cell之后调用的方法
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"+++");
}
//点击辅助视图调用的方法
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{
NSLog(@"---");
}
作业:
1. 在一个界面上有两个TableView, 其中一个显示城市列表,如:北京,上海, 广州..,另一个显示用户选中的那个城市的行政区列表,如: 东城,西城,…, 当用户选中了某个行政区,界面上的一个TextView就显示此行政区的简介。
数据模型自己设计。
2. TMusic的设置界面,根据给的资源包高仿QQ音乐的设置界面。
补充:
UI控件用weak,NSString用copy,其他对象一般用strong
tableviewcell的高度有一个代理方法来调
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
字符串追加
cell.detailTextLabel.text = [[contact.phoneName stringByAppendingString:@"\t"] stringByAppendingString:contact.iphone];
//更新界面
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:self.contacts.count -1 inSection:0];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
07-UIKit(tableview的编辑模式、accessoryView)的更多相关文章
- iOS UIKit:TableView之编辑模式(3)
一般table view有编辑模式和正常模式,当table view进入编辑模式时,会在row的左边显示编辑和重排控件,如图 42所示的编辑模式时的控件布局:左边的editing control有表 ...
- ios之UITableViewController(二) tableView的编辑模式
tableView的编辑模式 表视图可以进入编辑模式,当进入编辑模式就可以进行删除.插入.移动单元等操作 效果图: 让表视图进入编辑模式,进入编辑模式的方法有两种,一种是使用导航栏的edit 按钮,另 ...
- IOS第13天(3,私人通讯录,登陆状态数据存储,数据缓存, cell的滑动删除,进入编辑模式,单个位置刷新 )
*****联系人的界面的优化 HMContactsTableViewController.m #import "HMContactsTableViewController.h" # ...
- UITableView编辑模式大全解
1.UITableView 的编辑模式 进入编辑模式 代码体现 // 设置 editing 属性 tableView?.editing = true // 这个设置的时候是有动画效果的 tableVi ...
- IOS开发学习笔记032-UITableView 的编辑模式
UITableView 的三种编辑模式 1.删除 2.排序 3.添加 进入编辑模式,需要设置一个参数 - (IBAction)remove:(UIBarButtonItem *)sender { NS ...
- iOS开发——UI进阶篇(四)tableView的全局刷新,局部刷新,左滑操作,左滑出现更多按钮,进入编辑模式,批量删除,自定义批量删除
首先创建项目,在storyboard如下布局控件,设置好约束 然后创建cell模型类XMGWineCell数据模型类XMGWine创建UITableView,设置数据源协议,实现数据源方法懒加载数据这 ...
- IOS第七天(6:UiTableView编辑模式, 拖动位置 ,滑动删除)
**********UiTableView编辑模式, 拖动位置 ,滑动删除 #import "HMViewController.h" @interface HMViewContro ...
- UITableView的编辑模式
UITableView可以分普通模式和Editing模式两种,这里我们着重讨论Editing模式,Editing模式中又分三种操作:Insert.Delete. Reallocted.Insert和D ...
- UITableView 编辑模式(增加-删除-移动---自定义左滑 title)
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...
随机推荐
- Objective-c 类实现 (@implementation)
在用@interface声明类之后,可以使用@implementation进行实类的实现.类的实现的具体语法如下: @implementation 类名 方法实现代码; @end; 实例: @impl ...
- 移除GridView中的重复项
1. The HTML Markup <div> <asp:GridView ID="GridView1" runat="server" Au ...
- ppt类似工具AxeFile使用心得
一个所谓的傻瓜式过渡效果自动生成工具.定义好展示窗口大小,加入时序.所谓的闪烁效果,也是相当的滑稽. 是一个非专业的简单的快速PPT工具. 但是体现的确是扁平化的设计思路,很值得深思. ------ ...
- mfc主窗口添加背景图片后,如何实现在背景图片上输出文字
1.若是文档视图程序的话,在视图类的OnDraw(CDC* pDC)函数中调用pDC->TextOut()函数,就像平常输出文字一样.若是嫌文字的背景颜色破坏了图像,可以在输出文字之前调用pDC ...
- Oracle语句优化规则(一)
1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化 ...
- Nginx阅读笔记(三)之proxy_pass用法
在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走,如果没有/,则会把匹配的路径部分也给代理走. 假设访问 ...
- 安卓开发37:自定义的HorizontalScrollView类,使其pageScroll的时候焦点不选中
自定义一个HorizontalScrollView类,主要为了让这个HorizontalScrollView不能鼠标点击,不能左右按键,并且没有焦点. public class ImageMoveHo ...
- Windows SDK笔记(经典--一定要看)
Windows SDK笔记(一):Windows程序基本结构 一.概述 Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成.程序中只要按一定的格式填写系统留给 ...
- [置顶] 吃论扯谈---吃货和Office 365订阅的关系
什么事物都可以和吃联系起来,在女孩子穿裙子的季节这是一个悲伤的故事! 说明: :Office365是微软云计算产品之一,其采取订阅的方式,按人头*每月的方式付费,用户可以选择自己需要的服务 2:Off ...
- Java程序如何自动在线升级
有时候我们的程序需要连接服务器检测新版本,如果发现新版本则需要自动下载升级.这种需求在Linux下还好说,但在windows下如何替换正在运行的程序文件呢? 当然有办法,步骤如下: 1. 将我们的程序 ...