zoukankan      html  css  js  c++  java
  • iOS:实现表格填充和选择操作

     功能:创建一个列表,用数组填充表格,并支持选择列表行

    //
    //  main.m
    //  Hello
    //
    //  Created by lishujun on 14-8-28.
    //  Copyright (c) 2014年 lishujun. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    // 视图控制器对象
    @interface HelloWorldViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
    {
        NSArray *array;
        UITableView *tableView;
        //不用@property声明,就不能用self进行引用? 有什么差异,我得弄清楚
    }
    @end
    
    @implementation HelloWorldViewController
    
    -(HelloWorldViewController *) init
    {
        array = [[NSArray alloc]initWithObjects:@"oops", @"hello", @"world", nil];
        return self;
    }
    
    -(void) loadView
    {
        // 创建视图对象
        UIView *contentView = [[UIView alloc]initWithFrame:[[UIScreen mainScreen] applicationFrame]];
        contentView.backgroundColor = [UIColor lightGrayColor];
        self.view = contentView;
        
        // 创建tableView
        tableView = [[UITableView alloc]initWithFrame:[[UIScreen mainScreen] applicationFrame]];
        [tableView setDataSource:self];
        [tableView setDelegate:self];
        
        // tableView加入到内容视图
        [contentView addSubview:tableView];
    }
    
    // --------DataSource接口必须实现的方法,用于填充表格-----------
    -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
    {
        return 1; //设定列表分区个数
    }
    
    -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return [array count]; //设定列表长度
    }
    
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // 生成列表单元(尽可能复用已有单元)
        static NSString *simpleTableIdentifer = @"SimpleTableIdentifer";
        
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifer];
        if (cell == nil) {
            cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifer];
        }
        cell.textLabel.text = array[indexPath.row];
        return cell;
    }
    
    // ----------实现Delegate接口的方法,用于操作---------------
    
    -(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // 行选中之前的事件,下面代码实现是实现取消第一行的选择,即不允许选择
        if(indexPath.row == 0)
        {
            return nil;
        }
        else
        {
            return indexPath;
        }
    }
    
    -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        //行选中事件
        NSString *rowValue = array[indexPath.row];
        [tableView deselectRowAtIndexPath:indexPath animated:YES]; //取消选中状态
        NSLog(@"%@", rowValue);
        
    }
    @end
    
    
    // 委托对象
    @interface HelloWorldAppDelegate : NSObject <UIApplicationDelegate>
    {
        IBOutlet UIWindow *window;
    }
    
    @property (nonatomic, retain) UIWindow *window;
    @end
    
    @implementation HelloWorldAppDelegate
    @synthesize window;
    
    -(void) applicationDidFinishLaunching:(UIApplication *)application
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen]bounds]];
        HelloWorldViewController *viewController = [[HelloWorldViewController alloc]init];
        self.window.rootViewController = viewController;
        [self.window makeKeyAndVisible];
    }
    
    @end
    
    // 程序入口
    int main(int argc, char * argv[])
    {
        @autoreleasepool {
            return UIApplicationMain(argc, argv, nil, @"HelloWorldAppDelegate");
        }
    }
  • 相关阅读:
    国产html编辑器
    豆瓣90mhz电台还行
    购物搜索
    linode vps 优化集锦
    这个系统,我看行,
    代理网站
    合理设置域名TTL值给网站加速
    dns切换到dnspod
    elixir usage
    JSSH介绍
  • 原文地址:https://www.cnblogs.com/code-style/p/3952684.html
Copyright © 2011-2022 走看看