天堂向右,我依然向左

天下之大,虽离家千里,何处不可往!何事不可为!
生活之路,纵坎坷曲折,当奋斗不息,则精彩纷呈!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

转载:UITableViewController重要配置方法和Delegate

 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;
}

 

 以上就是所有重要的delegate方法,只要数量使用这些方法,我们就能创建和自定义自己想要的iPhone表格。

 

posted on 2010-08-18 09:15  老舟  阅读(428)  评论(0编辑  收藏  举报