UITableViewController基本操作

来源:互联网 发布:win10无法安装软件 编辑:程序博客网 时间:2024/06/07 02:25

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] ;//做掉模式视图,和导航入栈的所有视图控制类

0 0
原创粉丝点击