这次的学习是在Navigation-based Application模板中,用RootViewController class设置操作方法,使用UITableView的属性值。在导航控制器控件为程序的窗口添加上导航条,可构建多个视图连接导航按钮。这次的练习中,我在Navigation controller控件加入两个导航按钮,屏幕左上角Add按钮为表格添加新的一行,右上角Edit按钮为表格删除一行或者移动每行的顺序。当user点击edit按钮后,便会进入到编辑的视图,当user想要回到原先的视图便点击Done完成编辑。

 
 
编码:
 

ViewController.m文件

#import <UIKit/UIKit.h>

#import <Foundation/Foundation.h>

@interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

{

IBOutlet UITableView *rootTableView;

IBOutlet UIButton *editButton;

NSMutableArray *dataArray;

UITextField *rowField;

}

@property (nonatomic,retain) NSMutableArray *dataArray;

@property (nonatomic, retain) UITextField *rowField;

@property (nonatomic, retain) IBOutlet UITableView *rootTableView;

@property (nonatomic, retain) IBOutlet UIButton *editButton;

@end

ViewController.h文件

 

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize rootTableView;

@synthesize dataArray;

@synthesize editButton;

@synthesize rowField;

- (void)viewDidLoad

{

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

//定义内容文字

dataArray = [[NSMutableArray alloc] initWithObjects:@"Row1", @"Row2",@"Row3",@"Row4",@"Row5",nil];

//建立add按钮

UIBarButtonItem *addButton = [[UIBarButtonItem alloc]

initWithTitle:@"Add"

style:UIBarButtonItemStyleBordered

target:self

action:@selector(AddButtonAction:)];

self.navigationItem.leftBarButtonItem = addButton;

}

//构建操作方法,点击按钮执行

-(IBAction) EditButtonAction:(id)sender

{

//    [rootTableView setEditing: YES

//                     animated: YES];

if ([sender tag] == 1) {

[editButton setTitle:@"Done" forState:UIControlStateNormal];

[editButton setTag:2];

[rootTableView setEditing:YES animated:YES];

}else if ([sender tag] == 2){

[editButton setTitle:@"Edit" forState:UIControlStateNormal];

[editButton setTag:1];

[rootTableView setEditing:NO animated:YES];

}

}

//添加addbutton

-(IBAction)AddButtonAction:(id)sender

{

UIAlertView *dialog = [[UIAlertView alloc] initWithTitle:@"添加一行"

message:@""

delegate:self

cancelButtonTitle:@"取消"

otherButtonTitles:@"确定", nil];

rowField = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 38.0, 245.0, 20.0)];

[rowField setBackgroundColor:[UIColor whiteColor]];

[dialog addSubview:rowField];

[dialog show];

[dialog release];

[rowField release];

}

-(void) alertView: (UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

{

if ((buttonIndex != [alertView cancelButtonIndex]) && (rowField.text != nil)) {

[dataArray insertObject:[rowField text] atIndex:dataArray.count];

[self.rootTableView reloadData];

}

}

//表格中分组

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

return 2;

}

//表格中行数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

//表格中行数等于数组内容的个数

if (section ==0) {

return dataArray.count;

}

if (section ==1)

{

return 0;

}

else {

return 0;

}

}

//分组标题内容设置

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

{

//创建字符变量title

NSString *title = nil;

switch (section) {

case 0:

title = @"表格一";

break;

case 1:

title = @"表格二";

break;

default:

break;

}

return title;

}

//显示表格每一行内容

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath

{

//创建一个字符变量,用于取得文本数据类型

static NSString *CellIndentifier = @"cell";

//建立表格行数单元格

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIndentifier];

//当cell为空时

if (cell == nil)

{

//为cell重新获取表格内容标识符

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIndentifier] autorelease];

}

//分组section为0

if (indexPath.section ==0)

{

cell.textLabel.text =

[dataArray objectAtIndex:indexPath.row];

}

return cell;

}

//编辑

-(BOOL) tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath

{

return YES;

}

//调整

-(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

if (editingStyle == UITableViewCellEditingStyleDelete)

{

//删除

[dataArray removeObjectAtIndex:indexPath.row];

[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]

withRowAnimation:UITableViewRowAnimationFade];

}

}

//上下行移动

-(void) tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath

{

[dataArray insertObject:[dataArray objectAtIndex:sourceIndexPath.row]

atIndex:destinationIndexPath.row];

[dataArray removeObjectAtIndex:(NSUInteger) sourceIndexPath.row+1];

}

//让表格内容位置调整的方法

-(BOOL) tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath

{

return YES;

}

- (void)viewDidUnload

{

[super viewDidUnload];

// Release any retained subviews of the main view.

}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);

}

-(void) dealloc

{

[rootTableView release];

rootTableView = nil;

[rowField release];

[dataArray release];

dataArray = nil;

[editButton release];

editButton = nil;

[super dealloc];

}

@end

 
保存文件,打开ViewController.xib文件, 在view中添加一个Table view控件,
将delegate和dataSource连接到File's Owner图标。
接着添加两个Button控件,将add和edit连接到File's owner图标上,保存文件运行:
 
运行程序:
程序运行
当点击Edit编辑,进入编辑视图。
 

用户可以删除数据或者调整顺序。


点击Add进行添加一行。

 
 
 
 

引自:其他,作为分享

TableViewCell,TableView,UITableViewCell的更多相关文章

  1. ‎Cocos2d-x 学习笔记(22) TableView

    [Cocos2d-x 学习笔记 ]目录 1. 简介 TableView直接继承了ScrollView和ScrollViewDelegate.说明TableView能实现ScrollView拖动cont ...

  2. iOS 学习 - 4.存储聊天记录

    主要是用sqlite3来存储聊天记录 先导入sqlite3.dylib, 点 Add Other,同时按住shift+command+G, 在弹出的Go to the folder中输入/usr/li ...

  3. UITableView多选全选

    自定义cell和取到相应的cell就行了 TableViewCell.h #import <UIKit/UIKit.h> @interface TableViewCell : UITabl ...

  4. iOS开发——UI篇OC篇&UITableView多项选择

    UITableView多项选择 自定义cell和取到相应的cell就行了 TableViewCell.h #import <UIKit/UIKit.h> @interface TableV ...

  5. swift 分页视图

    var data:NSArray! var scrollView: UIScrollView! var pageCtrl: UIPageControl! override func viewDidLo ...

  6. 为UITableViewController瘦身

    在IOS开发中采用了MVC得模式,ViewController通常是最庞大的文件,里面包含了各种各样的大概,造成代码的复用率低下,可读性也降低,那么有什么办法来解决这个问题呢. 在创建Table的时候 ...

  7. IOS开发-表视图LV3导航控制器

    学到这里感觉有点难了,其实这篇文章再草稿箱里放了好久了~ 最近对于学习的热情下降了.这不行-抓紧学习走起! 在这一章节的学习中主要针对导航控制器及表视图来建立多视图的应用, 首先要了解一些概念-- 1 ...

  8. 简化MonoTouch.Dialog的使用

    读了一位园友写的使用MonoTouch.Dialog简化iOS界面开发,我来做个补充: 相信使用过DialogViewController(以下简称DVC)的同学都知道它的强大,但是缺点也是明显的,应 ...

  9. 项目管理之 Objective-C 编码规范

    目录: 一.格式化代码 二.命名 命名要求 1. 类的命名: 规则: 大驼峰命名法,每个单词的首字母都采用大写字母.一般添加业务前缀.后缀一般是当前类的种类. ViewController:后缀:Vi ...

随机推荐

  1. sql语句 decimal(18,0)什么意思

    decimal(18,0)18是定点精度,0是小数位数.decimal(a,b)a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38.b指定小数点右边可以存储的十进制数字的最大个数. ...

  2. UART

    一.协议部分: 协议部分转自:http://www.s8052.com/index.htm 串行通信的传送方向通常有三种: 1.为单工,只允许数据向一个方向传送: 2.半双工,允许数据向两个方向中的任 ...

  3. angularjs compile和link

    原文:http://www.cnblogs.com/GoodPingGe/p/4361354.html ************************************************ ...

  4. 自动化测试工具QTP的使用实例 分类: 软件测试 2015-06-17 00:23 185人阅读 评论(0) 收藏

    1. QTP简介 1.1QTP功能与特点 QTP是QuickTest Professional的简称,是一种自动化软件测试工具.在软件的测试过程中,QTP主要来用来通过已有的测试脚本执行重复的手动测试 ...

  5. Codis集群

    一.简介 Codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别(不支持的命令列表),上层应用可以像使用单机的Re ...

  6. 为了方便可灌入自定义方法AppendLog 比如File

    说起到qt的编译,真是领人痛心啊,不仅编译选项繁多,而且编译时间比较久,总是能使想编译qt源码的人望而却步,呵呵...我就是其中一个,不知道从什么时候开始就想着把qt的源码编译一下,也尝试过几次,但都 ...

  7. 使用jQuery+PHP+Mysql实现抽奖程序

    抽奖程序在实际生活中广泛运用,由于应用场景不同抽奖的方式也是多种多样的.本文将采用实例讲解如何利用jQuery+PHP+Mysql实现类似电视中常见的一个简单的抽奖程序. 查看演示 本例中的抽奖程序要 ...

  8. 在eclipse运行程序

    1.开始的时候由于另一个财务共享的项目,其中也应用了maven管理项目,因此就不用额外安装配置maven. 2.这里关键的一点就是需要通过maven和jetty配合运行lenmonOA. 3.jett ...

  9. HTML CSS

    HTML CSS css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化.存在方式有三种:元素内联.页面嵌入和外部引入,比较三种方式的优缺点.语法:styl ...

  10. NFinal中增加生成页面自动带入js和css

    增加在WebCompiler.aspx页面中的application.CreateCompile(true);方法里. //写aspx页面的自动提示层 #region 插入js&css com ...