• TableViewCell,TableView,UITableViewCell


    这次的学习是在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图标上,保存文件运行:
     
    运行程序:
    iOS <wbr>表格程序运行iOS <wbr>表格
    当点击Edit编辑,进入编辑视图。
     

    iOS <wbr>表格

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

    iOS <wbr>表格

    iOS <wbr>表格
    点击Add进行添加一行。
     
     
     
     

    引自:其他,作为分享

  • 相关阅读:
    svn command line tag
    MDbg.exe(.NET Framework 命令行调试程序)
    Microsoft Web Deployment Tool
    sql server CI
    VS 2010 One Click Deployment Issue “Application Validation did not succeed. Unable to continue”
    mshtml
    大厂程序员站错队被架空,只拿着五折工资!苟活和离职,如何选择?
    揭秘!Windows 为什么会蓝屏?微软程序员竟说是这个原因...
    喂!千万别忘了这个C语言知识!(~0 == -1 问题)
    Linux 比 Windows 更好,谁反对?我有13个赞成理由
  • 原文地址:https://www.cnblogs.com/Wild-orangutans/p/3835024.html
Copyright © 2020-2023  润新知