• UITableViewController的使用


    转自http://www.cnblogs.com/mac_arthur/archive/2010/01/25/1656052.html

    UITableViewController 列表在iPhone开发中起着决定性的重要作用,但是UITableViewController并不是那么简单使用的,以下就是其中的重要方法和Delegate:

    //这个delegate会获取有多少个"章节"
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1; //这里返回的是章节(section)的个数
    //如果数据源是一个复杂array或dictionary,则可以返回
    return [NSArray count]; 作为章节的个数
    }
    //这个delegate会获取章节内有多少行
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 0; //这个部分是必须要改的,否则0行的话,就是一个空表了
    //如果数据源是一个复杂array或dictionary, 可以使用嵌套的查询来返回这个个数了
    //比如:
    return [[NSArray objectAtIndex:section] //section为整数,所以如果使用NSDictionary,
    //记得使用辅助方法来计算其索引的key,或嵌套查询
    count]; //因为返回的依旧是一个array或dictionary对象,所以我们获取它的大小count
    }
    // 这里编辑每个栏格的外观
    - (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] autorelease];
    }
     
    // 一般我们就可以在这开始设置这个cell了,比如设置文字等:
    cell.textField.text = [NSArray objectAtIndex:indexPath.row];
    //假设这个NSArray就是本section的数据了,否则需要嵌套来查询section的信息,如前一个delegate
     
    return cell;
    }
    //当栏格被点击后需要触发的事件
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    AnotherViewController *anotherViewController = [[AnotherViewController alloc]
    initWithNibName:@"AnotherView" bundle:nil];
    // 建立并使用本地导航管理推入视图控制器是最普遍的方法
    [self.navigationController pushViewController:anotherViewController];
    [anotherViewController release];
    }
    // 该delegate是可选的,对那些可以被编辑的对象返回YES
    - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the specified item to be editable.
    return YES;
    }
    // 对特定编辑风格进行操作
    - (void)tableView:(UITableView *)tableView
    commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
    forRowAtIndexPath:(NSIndexPath *)indexPath
    {
    //以下是apple的缺省实例
    if (editingStyle == UITableViewCellEditingStyleDelete) {
    // 如果是要删除那行栏格,那么就去删除数据源中的对象
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
    }
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
    // 如果是要添加栏格,那么就应该将要添加的内容添加到数据源中
    }
    }
    // 可选delegate,对那些被移动栏格作特定操作
    - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath
    toIndexPath:(NSIndexPath *)toIndexPath {
    }
    // 对那些可以移动的行返回YES
    - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    // 如果不像让栏格移动,就返回NO
    return YES;
    }

    禁止TableView滚动,

    self.tableView.scrollEnabled = NO;

    或者 

    tableView.userInteractionEnabled = NO;

    弹出模式视图根导航

        TagetView *myTagetView= [[TagetView alloc] initWithNibName:@"TagetView" bundle:nil];
        myTagetView.modalTransitionStyle=UIModalTransitionStyleCrossDissolve;//淡出效果

           UIModalTransitionStyleCoverVertical,//上升效果
           UIModalTransitionStyleFlipHorizontal,//翻转效果

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:myTagetView];   

    [self.navigationController presentModalViewController:navController animated:YES];  //弹出模式控制视图 

    [myTagetView release];   

    [navController release];

    [self.navigationController dismissModalViewControllerAnimated:YES] ;//做掉模式视图,和导航入栈的所有视图控制类

  • 相关阅读:
    Lotus Notes/Domino发生故障时常用的数据收集步骤
    0207.Domino R8.0.x群集配置手册
    兼容IE、FF的将当前页加入收藏夹和设为首页的js代码
    常用函数
    jsonp详解
    开启curl
    Javascript在页面加载时的执行顺序
    linux系统利用u盘装xp
    Table '.\about_cj\newabout' is marked as crashed and should be repaired
    iframe跨域问题
  • 原文地址:https://www.cnblogs.com/jiangshiyong/p/2794112.html
Copyright © 2020-2023  润新知